昨天看到一个贴子 一张图片能让 iOS 系统重启,通过微信等社交软件可以快速进行传播。对这张图片非常感兴趣,于是开始研究,通过分析文件结构,发现 WechatIMG13720 1.jpg 样本文件有三个特点
(1) 对比其他照片多了一个 AROT 的结构,这个结构很可疑,信息如下:
只有 iPhone X 等高端机型拍摄的照片才会有 AROT 结构,而 iPhone 6 等低端的机型拍摄的照片没有 AROT 结构,可能出 iPhone 6 那时苹果还没加这类的功能。
(2) Exif 结构里的 ifdMainImage,找到 ExifTag 为 274, 有一个 usValue,这个值必须要是 1, 有时拍照保存的是 6, 不会触发漏洞,这个值和图片的显示方式有关。
(3) 样本图片之所以显示不完整,是因为scanData 数据被截断,而且没有结束标记,正常的 jpg 图片,最后是有结束标记(FF D9),但是样本文件却没有。
通过以上的三个特点,判断造成系统重启的原因是,由于图片被截断,系统在处理 AROT 结构时发生了错误。如果要构造一个能让系统重启的图片,使用 iPhone X 拍照,用 010 Editor 打开照片文件,查看确认 Exif -> ifdMainImage -> ExifTag(274) -> usValue 为 1, 然后删除最后的结束标记(FF D9),再把 scanData 删掉至少一半的数据,保存为新的图片文件,通过微信等社交软件打开,点击查看原图系统马上重启。
相关参考资料