Allez, ce matin, on va se faire plaisir. Je vais vous parler de la faille sécurité CVE-2023-21036 connue également sous le nom aCropalypse. Cela touche principalement les gens qui ont des smartphones Google Pixel et qui s’amusent recadrer leurs photos.
Alors en quoi ça consiste ? Et bien cela permet de récupérer des données dans des fichiers PNG qui ont été tronqués. Ainsi, un attaquant pourrait, en exploitant cette faille, restaurer des informations personnelles qui auraient été retirées d’une image comme des adresses postales ou des données bancaires, le tout à partir d’images mises en ligne. Flippant (ou trop cool… lol) !!
Pour mieux comprendre, imaginez que vous preniez une capture d’écran d’un mail contenant votre adresse personnelle, puis que vous la recadriez pour ne montrer que le produit que vous avez acheté et masquer vos données personnelles. Grâce à cette faille, il est tout à fait possible de récupérer la partie supprimée de l’image, y compris votre adresse.
Alors comment fonctionne cette vulnérabilité ?
Et bien cela repose sur la compression zlib utilisée dans les fichiers PNG. Normalement, il est très difficile de décompresser des données compressées sans connaître l’arbre de Huffman utilisé pour effectuer cette compression. Toutefois, dans le cas spécifique de cette exploitation de faille, en trouvant le début d’un bloc de codage Huffman, il devient possible de le décompresser à partir de celui-ci.
L’algorithme utilisé est assez simple : il parcoure chaque décalage binaire et, lorsqu’un décalage correspondant au début d’un bloc de Huffman est trouvé, il tente de décompresser les données en le prenant comme point de départ. Ainsi, si les données se décompressent, c’est OK. Sinon, il passe au décalage suivant.
for each bit-offset:
if it doesn't look like the start of a dynamic huffman block:
skip this offset
try decompressing from that offset:
if the decompressed data looks plausible:
return decompressed data!
catch decompression errors:
continue
Et voilà comment on récupère des données effacées sur des PNG.
Cette vulnérabilité est due à un problème d’API chez Google, où c’est l’option « w » (écriture) qui a été utilisée à la place de « wt » (écriture avec troncage). Par conséquent, l’image d’origine n’est pas tronquée lorsqu’elle est recadrée.
Et si vous voulez jouer avec, il y a un petit Proof of concept ici ou encore ce site qui permet de récupérer une image complète qui aurait été recadrée sur un Google Pixel. Ça promet :).
Bref, si la fonction « recadrage » que vous utilisez dans votre logiciel préféré passe par l’API de Google, soyez vigilant, le temps que ce problème soit corrigé.
0 Commentaires