为 Kindle 写越狱:空指针、溢出与最后一条 ROP 链
来源:chirp.tene7.com — 2026-10
📋 概述
Shadow 是作者的第三个 Kindle 越狱,也是迄今最复杂的一个,名字来自它本来打算潜伏几个月——可惜在 5.20.1 更新里被修掉,于是提前公开。2024 款 Kindle 起 Amazon 把传输从 U 盘式大容量存储换成 MTP,用的是 Collabora 从 Tizen 分支来的开源 mtp-responder 实现。攻击面因此变得棘手:tizen-mtp 是 PIE 加 ASLR,得先泄露地址;但好消息是它以 root 运行,而且自带 system() 函数,所以拿到模块基址就够了,不需要再绕 libc。
🔑 核心要点
- 起点是协议变更:Kindle 从 USB 大容量存储 切到 MTP,实现是开源的 tizen-mtp,代码可读
- MTP 的两个概念要抓准:容器(长度、类型、opcode、事务 ID、载荷)与 对象句柄(32 位,文件与文件夹统一叫对象)
- 障碍一:PIE 加 ASLR,tizen-mtp 每次运行的加载基址随机,必须先在内存里泄露点什么
- 障碍二被作者称为「糟糕的安全决定」但它帮了大忙——tizen-mtp 以 root 运行,不需要单独提权就能跑 jb.sh
- 更省事的是它自带 system(),所以只要拿到基址加偏移,不必再走「泄露 GOT → 找 libc → 找 system」的老路
- 两个漏洞串成一条链:未初始化的时间字符串 与 dummy 文件夹里的越界写,前者泄地址后者写栈,最后拼 ROP 链
- Shadow 是第二个能打通 5.19.6 及以上固件的越狱,另一个是 SpiderCat——后者面对的是固定地址的 webreader,简单得多
💡 金句
All in all, the last two things mentioned on their own are terrible security choices, but I'm not a developer. Who am I to judge?
👍 0
👎 0
← 返回 Lobsters 首页