ACropalypse

aCropalypse（CVE 2023-21036）是一个出现在Google Pixel手机的截图编辑工具Markup的安全漏洞。安全研究员Simon Aarons和David Buchanan在2023年发现了该漏洞，该漏洞允许攻击者查看裁剪掉的截图部分。在发现aCropalypse之后，一个类似的零日漏洞亦被发现，影响到Windows 10的截图和草图和Windows 11的截图工具。

背景 

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

发现和用途 
两位分别名为Simon Aarons和David Buchanan的安全研究员发现了aCropalypse。该漏洞早前由Lucy Phipps于一年前提交到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之类的社交媒体网站会自动截断上传的图像，而也有一些网站不会这样做。直至1月24日，Discord未采取措施缓解漏洞带来的影响。

影响 
发布于2019年9月并搭载Android 10的Google Pixel皆受aCropalypse的影响。受影响的范围包括含有信用卡号码及其他私人照片的图像。该漏洞被披露时，未获取更新的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版截图工具不受此影响。

参考文献 

Android软件
程式錯誤