Una stessa immagine può apparire in modi differenti, mostrando contenuti diversi, se aperta in Windows oppure sui dispositivi Apple.
Lo ha dimostrato il ricercatore, esperto in reverse engineering e crittografia, David Buchanan che ha invitato gli utenti a fare una prova. Aprendo questa pagina web dimostrativa da un browser su Windows si leggerà “Hello World” mentre da Safari su device Apple comparirà “Hello Apple” e poco più sotto con vecchio Mac anziché un PC IBM.
Ecco come appare la pagina di test in Windows:
Ed ecco invece come viene visualizzata sui dispositivi Apple:
Qualcuno potrebbe ipotizzare che l’autore della pagina web mostri semplicemente delle immagini diverse a seconda della stringa user agent con cui si presenta l’utente: in questo modo sarebbe facile differenziare un client Windows da un sistema Apple. Niente di tutto ciò: le immagini inserite nel codice HTML della pagina sono sempre esattamente le stesse.
E allora come si giustifica un comportamento del genere? Qual è il mistero?
Buchanan spiega che l’anomalia è strettamente legata con il concetto di parallel-decodable PNG: a seconda del comportamento tenuto dal componente che si occupa del parsing e del rendering delle immagini esse possono essere interpretate e rese in maniera molto diversa.
Il ricercatore osserva che Apple usa approccio tutto suo per la decodifica delle immagini in formato PNG, una soluzione che viene definita imperfetta. Almeno nell’attuale implementazione.
Prendendo in considerazione due blocchi di dati che compongono lo stesso file PNG, Buchanan si è accorto che nel caso di Apple la funzione decompress(a + b)
non equivale a decompress(a) + decompress(b)
: da qui il comportamento profondamente differente nel rendering delle due immagini.
Lo studioso ha pubblicato anche il codice proof-of-concept che permette a chiunque di diversificare il rendering delle immagini sui device Apple.
Non è la prima volta che Buchanan presenta “perle” di questo tipo: a marzo 2021 avevamo dimostrato come usare immagini su Twitter per nascondere file Zip e MP3 di dimensioni non superiori a 3 MB.