周口市网站建设_网站建设公司_Django_seo优化
2025/12/24 11:07:29 网站建设 项目流程

发生原因

  • React19 React Server Components / Flight 协议层出现的“反序列化/解析逻辑缺陷”
  • 向"React Server Function / Server Action"发送请求, React 在服务端进行解码/序列化该 payload 时校验不足, 产生原型污染, 最终远程代码执行(RCE)
  • Next.js(App Router)深度依赖 RSC / Flight 协议 以及 Server Action 相关机制. 即使没有显示的写Server Action, 只要应用可以 RSC, 也会受影响
  • 一旦原型污染, NodeJS 进程里就能执行任意的远程代码.

影响的面/处置/监控

  • 我们的项目使用 Page Router 就没关系
  • 所有线上服务进行了升级
  • 查看有无异常 POST, 爆发式的扫描, 容器内的异常进程等

问题

什么是 RSC / Flight 协议

  • 页面和服务之间的通信的内容, 本来应该是 json 数据, 或者是 html, 但因为服务端渲染变成了一种其他的协议, 就是 flight 协议, 可以进行转换

什么是反序列化解析

  • 就是拿到 flight 协议的内容, 然后进行格式化, 然后再交给服务端的函数执行

React Server Function / Server Action 是什么

  • 服务端的函数, Server Action 就代表能再服务端执行的组件

解码序列化是什么?

  • 同上

payload 又是什么?

  • 一次请求里真正承载数据和指令的内容
  • 本来应该是一些 json, 表单, multipart, 二进制等
  • 在 nextjs 的 app router 中是 flight 这种协议

什么是原型污染 prototype pollution?

  • 因为过来的 flight 会被格式化, 然后在服务端运行
  • 如果这个时候, 直接修改了某个对象的__proto__, 就相当于修改了Object['prototype']
  • 此时, 再有对象获取某个属性的时候, 就能获取到, 或者是判断到. 例如 a['__proto__']['name'] = 'zhangrh' 那么 b['name']就等于 zhangrh
  • 这就是原型污染

为什么原型污染能够 RCE

  • 绕过 Action 的白名单
    • Server Action 的边界是: 客户端只能调用服务端明确暴露/允许的函数
    • 如果校验被污染, 就可能走到没有暴露的方法中.
    • 如果框架里存在强能力 action/内部 handler, 就变得危险
  • 走到了动态解释/动态加载的点(sink)
    • 动态加载某个模块/插件
    • 动态解析某种表达式/模版
    • 调用一个按名字分发的 handler
  • 这些能力本来是正常的, 但是输入过程能操作流程和参数, 就有可能造成执行任意代码
  • RCE 的本质: 把控制权一路传递到了某个能执行代码或者系统能力的 sink

具体的执行过程

  1. 原型污染: 所有的表单字段都加了一个mode='admin'
  2. gadget: 系统某处写了 if(from.mode== 'admin' ) {}走管理员流程
  3. sink: 管理员能维护所有的可执行脚本
  4. 结果: 本来没有执行脚本, 但现在流程走到了可执行脚本地方. 然后执行了远程代码

攻击者如何知道哪些流程代码分支能走到脚本执行的地方

  • 开源框架 / 依赖包
  • 攻击者对比修复前后的diff, 针对旧版本
  • fuzzing模糊撞击
    • 不断生成各种输入
    • 观察结果
    • 摸到可执行分支
    • 根据输入找到触发条件
  • 利用泄露的信息进行推断
  • 不一定执行脚本, 也可能是强力代码分支

什么是强力代码分支

  • 强力分支自带执行点
    • 动态模块/组件/处理器解析, 例如执行一个函数fn(...), 然后这个时候, 自己创建一个函数名, 就能执行代码了
    • 动态加载某段实现,插件/适配器/解析器
    • 访问文件系统/网络/进程
  • 作为RCE的垫脚石
    • 第一步: 推入某个分支拿到信息泄漏(版本, 路径,内部结构,错误栈)
    • 第二步: 利用这些信息更精确的构造输入,碰撞执行下一个gadget
    • 第三步: 最终落到sink(RCE/任意文件读写/SSRF)
  • 除了RCE外, 强力分支带来高价值后果
    • 未授权调用内容action/越权操作
    • 任意文件读取(密钥,配置,源码片段)
    • SSRF(server-side-request-forgery), 请求内网,内部地址,或者内部的接口
    • DoS, 卡死服务
    • 绕过安全网关/校验, 系统进入debug/unsafe模式

控制机器挖矿

  • RCE/命令执行 -> 下载脚本开始挖矿
  • 拿到云凭证(配置, SSRF) -> 使用账号开新的机器进行挖矿
  • 拿到内网权限 -> 感染更多机器进行挖矿

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询