Cette image est très différente sur les appareils Apple — voyez par vous-même

mac

Regardez bien l’image ci-dessous et l’appareil sur lequel vous vous trouvez.

Maintenant, visualisez-le à nouveau sur un appareil Apple. Inversement, si vous utilisez un appareil Apple, affichez cette page sur un appareil Android ou Windows.

« Pensez différemment », voyez différemment

Si vous utilisez un appareil Apple et affichez cette page sur Safari, il est probable que l’image apparaisse assez différemment de ce que vous verriez sur, par exemple, Chrome ou une application d’imagerie sous Windows.

Reverse engineering et cryptographe David Buchanan nous a peut-être laissé perplexe face à sa dernière création :

L'image mystérieuse
L’image mystérieuse qui apparaît différente dans les applications Apple et non Apple

Le PNG ci-dessus lit « HELLO WORLD » pour la plupart des utilisateurs, à l’exception de ceux qui voient « HELLO APPLE », c’est-à-dire dans les logiciels conçus par Apple.

Mais croyez-nous, c’est la même image a.png, interprété différemment par les applications Apple et non Apple.

Dans les tests effectués par EZpublish-france.fr, sur macOS Big Sur 11.6, la dernière version du navigateur Web Chrome (96.0.4664.110 (x86_64)) a rendu le texte de l’image sous la forme  » HELLO WORLD « . Mais, l’affichage de cette page sur Safari ou l’image seule dans l’application « Aperçu » de Mac affiche « BONJOUR APPLE ».

L'image apparaît différemment dans Safari et Chrome sur macOS
L’image apparaît différemment dans Safari et Chrome sur macOS (EZpublish-france.fr)

Dans un autre test effectué par EZpublish-france.fr sur un iPhone, cependant, le navigateur Web Chrome pour iOS et Safari affichait « HELLO APPLE », et non « HELLO WORLD ».

En voici un de plus qui vous surprendra un peu plus : voyez-vous un IBM ou un Mac ci-dessous ? Encore une fois, affichez cette page avec un appareil Apple et non Apple :

IBM ou Mac ?
Voyez-vous un IBM ou un Mac ? (Buchanan)

Pourquoi cela arrive-t-il?

Sur son site Web, Buchanan a concis explique la raison et le concept des « PNG décodables en parallèle » qui provoquent une ambiguïté parmi les applications logicielles.

Selon l’implémentation d’un moteur de rendu d’image, le même PNG peut être interprété de manière assez différente.

« J’ai trouvé cela en écrivant mon propre décodeur PNG multi-thread. En réfléchissant à ma conception, j’ai réalisé que j’avais un bug d’implémentation, écrit l’ingénieur.

« Après avoir appris qu’Apple a sa propre implémentation de PNG décodables en parallèle, j’ai réalisé qu’ils avaient fait exactement la même erreur ! »

Buchanan a découvert qu’il était possible de créer un fichier PNG où :

décompresser(a + b) != décompresser(a) + décompresser(b)

« Cela pourrait arriver si une se termine à mi-chemin à travers un bloc non compressé. Il est donc possible qu’une image ait deux interprétations possibles, selon qu’un décodeur parallèle ou non parallèle la décode », explique encore Buchanan.

« Cela peut être atténué par le décodeur, en vérifiant qu’il n’y a pas de données non traitées dans chaque élément du zlib flux. Mon implémentation ne le fait pas actuellement ! »

Pour démontrer le maximum de possibilités qui pourraient être atteintes avec cette « erreur », Buchanan a partagé un code de preuve de concept (PoC) :

Code PoC
Code PoC démontrant comment le même PNG peut être interprété différemment (EZpublish-france.fr)

Le PoC de 84 lignes montre comment certaines bibliothèques de rendu d’images peuvent être amenées à afficher la version alternative d’une image, celle avec le « MESSAGE SECRET ».

En fait, l’ingénieur inverse a publié un outil pratique appelé ‘Packer PNG ambigu‘ sur GitHub qui permet à n’importe qui de créer des images PNG complètement différentes dans les logiciels Apple.

En mars de cette année, Buchanan avait également démontré comment les images Twitter pouvaient être utilisées de manière abusive pour cacher des fichiers ZIP et MP3 de 3 Mo à l’intérieur.

Maintenant, si le résultat final de cette entreprise de décodage parallèle n’avait été qu’une image erronée ou corrompue qui ne serait pas rendue correctement, il serait plus facile de classer cela comme un « bug ».

Mais, nous nous demandons, cela pourrait-il devenir un risque de sécurité dans certains contextes, ou pour un vecteur d’attaque dont les acteurs malveillants pourraient abuser ? Le même fichier vu différemment par deux entités est voué à causer des problèmes.