挖洞经验 | KindleDrip:通过Kindle邮箱窃取Kindle设备的个人信息
字数 1941 2025-08-15 21:33:54
KindleDrip漏洞分析与利用教学文档
1. 漏洞概述
KindleDrip是一组影响Amazon Kindle设备的漏洞组合,通过"发送至Kindle"(Send to Kindle)功能实现攻击。攻击者只需知道受害者的Kindle邮箱地址,即可发送恶意电子书文档,最终获取设备root权限并窃取敏感信息。
漏洞危害
- 获取受害者Kindle设备中的信用卡信息等个人数据
- 使用受害者绑定的信用卡在Kindle商店购物
- 变卖受害者的电子书并将所得转入攻击者账户
- 完全控制受害者设备(root权限)
2. 漏洞组成
该攻击利用了三个关键漏洞的组合:
- 电子书文档恶意注入漏洞:Kindle邮箱服务缺乏严格的身份验证
- JPEG XR解析缓冲区溢出漏洞:libjpegXR.so库中的解析缺陷
- 提权漏洞:stackdumpd服务中的参数注入问题
3. 详细技术分析
3.1 电子书文档恶意注入
攻击原理:
- Kindle为每个设备分配一个@kindle.com后缀的特殊邮箱
- 用户可通过邮件附件发送MOBI格式电子书到该邮箱
- Amazon未实施严格的发件人验证机制
利用方法:
- 使用在线邮件伪造服务(如https://emkei.cz/)
- 构造恶意MOBI电子书文档作为附件
- 发送至目标Kindle邮箱(格式如name@kindle.com或name_<random_string>@kindle.com)
3.2 JPEG XR解析漏洞分析
漏洞位置:
- libjpegXR.so库中的图片解析功能
- 涉及jxr_image结构体中的量化参数处理
关键缺陷代码:
unsigned char dc_quant_ch[MAX_CHANNELS];
unsigned char lp_quant_ch[MAX_CHANNELS][MAX_LP_QPS];
unsigned char hp_quant_ch[MAX_CHANNELS][MAX_HP_QPS];
漏洞成因:
- 官方JPEG XR参考代码应检查num_channels < MAX_CHANNELS
- Kindle实现中缺失了这一安全检查
- 导致攻击者可通过精心构造的图片数据实现缓冲区溢出
内存布局:
00008000–000a0000 r-xp 00000000 b3:01 1939 /usr/bin/mesquite
000a0000–000a2000 rwxp 00098000 b3:01 1939 /usr/bin/mesquite
000a2000–002b8000 rwxp 00000000 00:00 0 [heap]
利用方法:
- 在MOBI电子书中嵌入WEB链接
- 链接指向包含恶意JPEG XR图片的HTML页面
- 受害者点击链接后触发浏览器解析
- 通过溢出覆盖tile_quant指针
- 利用全局偏移表(GOT)实现代码执行
3.3 提权漏洞分析
漏洞位置:
- stackdumpd服务(以root权限运行)
- 负责崩溃进程的堆栈转储
漏洞成因:
- CURRENT_TID参数检查不严:
- 首次检查:atoi返回值不为0
- 二次检查:正则表达式'^[0-9]*$'
- 可通过以下方式绕过:
- 字符串+数字格式(如"1\ncommand")
- 换行符注入
利用链:
- 从mesquite进程(受限权限)触发崩溃
- 通过参数注入在stackdumpd中执行命令
- 获得root权限的shell
4. 完整攻击流程
4.1 攻击准备
- 获取目标Kindle邮箱地址
- 构造恶意MOBI电子书文档:
- 包含触发JPEG XR解析漏洞的图片
- 嵌入指向恶意HTML页面的链接
4.2 攻击步骤
- 通过邮件伪造服务发送恶意电子书至目标邮箱
- 受害者打开电子书并点击链接
- 触发WEB浏览器(mesquite)解析恶意JPEG XR图片
- 利用缓冲区溢出执行初始shellcode
- 触发进程崩溃调用stackdumpd
- 通过参数注入实现root权限提升
- 执行最终payload(窃取信息等)
4.3 验证方法
- 设备重启后背景被修改
- 可访问受害者亚马逊账户
- 可查看设备中的敏感文件
5. 漏洞修复方案
5.1 亚马逊修复措施
-
电子书注入漏洞:
- 实施严格的邮件身份验证机制
-
JPEG XR解析漏洞:
- 添加num_channels不超过MAX_CHANNELS的检查
-
提权漏洞:
- 修改stackdumpd的参数检查:
PROCESS_PID=$(echo $1 | head -n 1 | grep '^[[:digit:]]*$') PROCESS=$(echo $2 | head -n 1 | grep '^[[:alnum:]]*$') CURRENT_TID=$(echo $3 | head -n 1 | grep '^[[:digit:]]*$')
- 修改stackdumpd的参数检查:
5.2 用户防护建议
- 及时更新Kindle固件(5.13.4及以上版本)
- 谨慎处理不明来源的电子书
- 避免点击电子书中的可疑链接
- 定期检查账户活动记录
6. 时间线
- 2020.10.17: 漏洞上报
- 2020.10.19: 亚马逊确认漏洞
- 2020.11.04: 奖励12K$
- 2020.11.11: 额外奖励6K$
- 2020.12.10: 发布修复版本5.13.4
- 2020.12.29: 验证修复
- 2021.1.19: 漏洞公开
7. 总结
KindleDrip漏洞组合展示了IoT设备中常见的安全问题:
- 服务接口缺乏足够认证(Send to Kindle功能)
- 第三方库实现缺陷(JPEG XR解析)
- 系统服务权限管理不当(stackdumpd)
该案例强调了深度防御的重要性,即使单个漏洞可能危害有限,但组合利用可导致严重后果。对于设备厂商,应全面审查所有输入接口和解析器;对于安全研究人员,跨组件、跨权限的漏洞链挖掘值得关注。