Hacker News 中文摘要

RSS订阅

无泄漏,无问题——利用ROP链绕过ASLR实现远程代码执行 -- No Leak, No Problem – Bypassing ASLR with a ROP Chain to Gain RCE

文章摘要

文章介绍了针对INSTAR IN-8401 2K+网络摄像头的漏洞研究过程,从固件提取分析到发现未知漏洞,最终通过构建ARM ROP链绕过ASLR防护实现远程代码执行。该设备存在约1.2万台暴露在公网,研究展示了无需地址泄露的复杂漏洞利用方法。

文章总结

绕过ASLR实现RCE:利用ROP链攻击INSTAR IP摄像头漏洞

研究背景

在完成ARM漏洞利用研究后,作者转向更现代的IoT目标——德国制造商INSTAR的IN-8401 2K+ IP摄像头。该设备暴露了基于Web的配置界面,全球约12,000台设备可通过互联网访问。

固件提取与分析

  1. 硬件调试接口
    通过厂商文档发现设备暴露UART接口,使用PCBites和FTDI转换器连接后,成功中断启动过程进入U-Boot环境。通过修改bootargs内核参数(添加init=/bin/sh),最终获取root shell并导出完整文件系统。

  2. 攻击面分析

    • Web架构:lighttpd作为反向代理,将.cgi请求转发至fcgi_server,后者通过TLV格式与ipc_server通信。
    • 核心目标:未认证可达的fcgi_serveripc_server二进制文件。

漏洞发现

  1. 漏洞定位
    fcgi_server的Basic认证处理流程中,发现自定义Base64解码函数存在栈缓冲区溢出(固定516字节缓冲区)。通过超长认证字符串触发崩溃,确认PC寄存器被覆盖为0x41414140

  2. 利用限制

    • 缓解措施:NX启用(不可执行栈)、部分RELRO(GOT可写)、非PIE(二进制地址固定)。
    • 挑战:需绕过ASLR,且libc地址随机化。

漏洞利用

  1. ROP链设计

    • 关键思路:通过GOT/PLT机制获取已知函数地址(如isalnum),计算目标函数(system)偏移,修改GOT实现跳转。
    • 核心步骤
      • 读取isalnum@got地址(已知)
      • 计算system偏移(0x13230)
      • 通过ROP链完成算术运算并写回GOT
      • 调用被篡改的isalnum@plt实际执行system
  2. 关键gadget

    • 地址加载ldr r6, [r3, #0x10](从GOT读取isalnum地址)
    • 算术运算add r6, fp, r6(fp存储偏移量)
    • 内存写入str r0, [r4, #4](将system地址写回GOT)
    • 最终跳转blx r6(触发system调用)
  3. 完整利用链
    通过精心构造的栈布局,依次:

    • 初始化寄存器(填充偏移量和临时值)
    • 加载libc函数地址
    • 执行算术运算
    • 篡改GOT条目
    • 传递命令参数并跳转

成果与修复

  • 漏洞影响:实现未认证远程代码执行(RCE),获得设备root权限。
  • 修复情况:厂商在90天内发布更新,漏洞细节和PoC已公开(GitHub)。

技术亮点

  • 无泄漏ASLR绕过:通过静态二进制gadget动态计算libc地址。
  • 实战限制克服:避免暴力破解(32位系统可行但低效),采用一次性精准利用。
  • 嵌入式安全启示:强调硬件调试接口风险、中间件安全审计重要性。

(注:原文中调试过程、辅助工具使用等细节已简化,保留核心逻辑路径。完整技术细节可参考原始博客和漏洞报告。)

评论总结

这篇评论主要围绕ASLR(地址空间布局随机化)绕过技术的讨论,观点呈现多元化:

  1. 对技术价值的肯定:
  • "Good job... a fun read nonetheless"(评论1)
  • "It’s fun working on targets with a less established research history"(评论1)
  1. 对ASLR绕过的技术性质疑:
  • "I would not consider this actually bypassing ASLR"(评论2)
  • "ASLR is already turned off for a critically important block of code"(评论2)
  1. 对安全防护缺失的关注:
  • "The most shocking part is the absence of stack canaries"(评论3)
  • "I know there are issues with them on microcontrollers"(评论3)
  1. 对技术细节的追问:
  • "how was it quickly checked? What was the output..."(评论5)
  • "you expect to see PIE enabled not DSO"(评论5)
  1. 对技术分享的赞赏:
  • "Expanding it, perhaps to the benefit of others like me"(评论4)