挖洞经验 | 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. 漏洞组成

该攻击利用了三个关键漏洞的组合:

  1. 电子书文档恶意注入漏洞:Kindle邮箱服务缺乏严格的身份验证
  2. JPEG XR解析缓冲区溢出漏洞:libjpegXR.so库中的解析缺陷
  3. 提权漏洞:stackdumpd服务中的参数注入问题

3. 详细技术分析

3.1 电子书文档恶意注入

攻击原理

  • Kindle为每个设备分配一个@kindle.com后缀的特殊邮箱
  • 用户可通过邮件附件发送MOBI格式电子书到该邮箱
  • Amazon未实施严格的发件人验证机制

利用方法

  1. 使用在线邮件伪造服务(如https://emkei.cz/)
  2. 构造恶意MOBI电子书文档作为附件
  3. 发送至目标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]

利用方法

  1. 在MOBI电子书中嵌入WEB链接
  2. 链接指向包含恶意JPEG XR图片的HTML页面
  3. 受害者点击链接后触发浏览器解析
  4. 通过溢出覆盖tile_quant指针
  5. 利用全局偏移表(GOT)实现代码执行

3.3 提权漏洞分析

漏洞位置

  • stackdumpd服务(以root权限运行)
  • 负责崩溃进程的堆栈转储

漏洞成因

  1. CURRENT_TID参数检查不严:
    • 首次检查:atoi返回值不为0
    • 二次检查:正则表达式'^[0-9]*$'
  2. 可通过以下方式绕过:
    • 字符串+数字格式(如"1\ncommand")
    • 换行符注入

利用链

  1. 从mesquite进程(受限权限)触发崩溃
  2. 通过参数注入在stackdumpd中执行命令
  3. 获得root权限的shell

4. 完整攻击流程

4.1 攻击准备

  1. 获取目标Kindle邮箱地址
  2. 构造恶意MOBI电子书文档:
    • 包含触发JPEG XR解析漏洞的图片
    • 嵌入指向恶意HTML页面的链接

4.2 攻击步骤

  1. 通过邮件伪造服务发送恶意电子书至目标邮箱
  2. 受害者打开电子书并点击链接
  3. 触发WEB浏览器(mesquite)解析恶意JPEG XR图片
  4. 利用缓冲区溢出执行初始shellcode
  5. 触发进程崩溃调用stackdumpd
  6. 通过参数注入实现root权限提升
  7. 执行最终payload(窃取信息等)

4.3 验证方法

  • 设备重启后背景被修改
  • 可访问受害者亚马逊账户
  • 可查看设备中的敏感文件

5. 漏洞修复方案

5.1 亚马逊修复措施

  1. 电子书注入漏洞

    • 实施严格的邮件身份验证机制
  2. JPEG XR解析漏洞

    • 添加num_channels不超过MAX_CHANNELS的检查
  3. 提权漏洞

    • 修改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:]]*$')
      

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设备中常见的安全问题:

  1. 服务接口缺乏足够认证(Send to Kindle功能)
  2. 第三方库实现缺陷(JPEG XR解析)
  3. 系统服务权限管理不当(stackdumpd)

该案例强调了深度防御的重要性,即使单个漏洞可能危害有限,但组合利用可导致严重后果。对于设备厂商,应全面审查所有输入接口和解析器;对于安全研究人员,跨组件、跨权限的漏洞链挖掘值得关注。

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结构体中的量化参数处理 关键缺陷代码 : 漏洞成因 : 官方JPEG XR参考代码应检查num_ channels < MAX_ CHANNELS Kindle实现中缺失了这一安全检查 导致攻击者可通过精心构造的图片数据实现缓冲区溢出 内存布局 : 利用方法 : 在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的参数检查: 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) 该案例强调了深度防御的重要性,即使单个漏洞可能危害有限,但组合利用可导致严重后果。对于设备厂商,应全面审查所有输入接口和解析器;对于安全研究人员,跨组件、跨权限的漏洞链挖掘值得关注。