ACropalypse

aCropalypse（CVE 2023-21036）是Markup中的一个漏洞。Markup是随着Android Pie的发布而在Google Pixel手机中引入的屏幕截图编辑工具。该漏洞由安全研究人员Simon Aarons和David Buchanan于2023年发现，该漏洞允许攻击者查看裁剪掉的截图部分。在aCropalypse被发现后，一个类似的零日漏洞亦被发现，影响到Windows 10的截图和草图和Windows 11的截图工具。

 背景 

2018年，Google为Android Pie新增了一款名为Markup的图片编辑器。该编辑器允许用户进行截图，并可利用钢笔和荧光笔的功能在屏幕上对截图进行修改。用户可将这些截图保存到Google相册或本地。

 发现和用途 
aCropalypse是由两位安全研究员Simon Aarons和David Buchanan发现的。该漏洞早前由Lucy Phipps于2022年8月11日提交到Google问题追踪系统。据报道，当Aarons注意到一张黑底白字的截图文件大小异常大时，他发现了这个错误。有人建立了一个网站，用户可通过在此提交裁剪后或修改过的图像，来对图像进行还原。

 行为 
aCropalypse利用了Markup中的一个漏洞。在Markup保存被裁剪的截图后，修改过的图像会保存到与原始图像相同的位置。此图像使用函数创建，调用函数时使用了参数，相反传递代表“写入”操作的参数可截断原始图像。即使图像未用，而是创建，前者会将一个参数转换为后者的掩码。有类似的函数，如C语言的fopen函数，该函数中的参数会将文件截断为零长度。参数在Android 10的一项未记录变更中开始使用。

Markup使用了一个叫zlib的压缩库，利用基于LZ77与LZ78的无损数据压缩算法Deflate，其中每一位数据引用最后一位数据，动态霍夫曼编码在块的开始处定义霍夫曼树。Markup截图的霍夫曼树每隔16千字节重新指定一次。对aCropalypse漏洞的初步利用预计算了8个字节串构成的列表，并将其传递到zlib，以便从指定的比特偏移量开始。除此之外，漏洞的初步利用以32千字节大小的ASCII字符“X”作为图像流的前缀。

 缓解措施 
修补aCropalypse的内部补丁已于2023年1月24日完成，但在之后的2023年3月13日才推出安全补丁进行修复。某些像Twitter之类的社交媒体网站会自动截断上传的图像，而也有一些网站不会这样做。Discord于1月17日更新中修复了该漏洞。

 影响 
aCropalypse会影响到运行Android 10的Google Pixel手机受影响的范围包括含有信用卡号码及其他私人照片的图像。该漏洞被披露时，未获取更新的Pixel 3、Pixel 3a、Pixel 4、Pixel 5、Pixel 6和Pixel 6a设备处于风险之中。

3月21日，软件工程师Chris Blume指出，Windows 11的截图工具保存的文件大小等同于裁剪后的图像。据此，Buchanan发现Windows 11的截图工具和Windows 10的截图和草图容易受相同漏洞的影响，而Windows 10的Win32版截图工具不受此影响。

 参考文献 

Category:Android软件
Category:程式錯誤