Proprio ieri abbiamo scritto di un bug nei telefoni Google Pixel, a quanto pare ora rattoppato, con conseguenze potenzialmente pericolose.
I cercatori di bug, comprensibilmente eccitati (e preoccupati) da ciò che avevano trovato, decisero di seguire al massimo il principio BWAIN, trasformandolo in un Bug con un nome impressionante: aCropalypse.
Nel caso ve lo stiate chiedendo, la parola apocalisse significa letteralmente qualsiasi tipo di rivelazione, ma di solito è usata per riferirsi al testo biblico noto come Apocalisse di San Giovanni, che ritrae la fine del mondo.
Quindi il suo significato metaforico, nelle parole del New Oxford American Dictionary, è "un evento che comporta distruzione o danno su scala spaventosa o catastrofica".
Non siamo del tutto convinti che questo bug meriti un nome così, ahhhh, apocalittico, ma siamo disposti ad ammettere che in un mondo in cui fantastico può significare "abbastanza buono", il nome è probabilmente accettabile, se non del tutto ineccepibile.
Il “raccolto” in “aCropalypse”
La parte "ritaglia" del nome deriva dall'attività che ha maggiori probabilità di attivare il bug, soprannominata CVE-2023-20136 nella sua incarnazione Google: ritagliare foto o schermate per rimuovere parti sensibili o indesiderate prima di condividerle.
In parole povere, puoi immaginare che se prendi, diciamo, uno screenshot 1080 × 1980 dell'intero schermo del tuo telefono, probabilmente non vorrai pubblicare l'intera immagine online o inviare il tutto a un amico.
La maggior parte delle persone preferirebbe ritagliare almeno la parte superiore dello screenshot, rimuovendo così dettagli come il nome del proprio gestore di telefonia mobile, la data e l'ora.
E se stavi scattando, ad esempio, un'e-mail o un post sui social media nel mezzo di un elenco, quasi sicuramente vorresti oscurare le e-mail o i post che sono apparsi appena sopra o appena sotto la parte di interesse.
Anche dopo aver ritagliato l'immagine, potresti anche volerne oscurare parti (una parola gergale che significa oscurare o censurare parte di un documento), ad esempio facendo cadere una casella nera sopra il nome del mittente, l'indirizzo e-mail, il numero di telefono o qualsiasi altra cosa .
Ad ogni modo, si potrebbe presumere che se si tagliano pezzi dell'originale, si oscurano alcuni dettagli con blocchi di colore solido (che si comprimono molto più facilmente rispetto ai normali dati dell'immagine) e si salva la nuova immagine sopra quella vecchia...
...che la nuova immagine sarebbe quasi sicuramente più piccola, forse molto più piccola, dell'originale.
A causa di tutte le cose che hai lasciato fuori!
Ma non è quello che è successo sui telefoni Google Pixel, almeno fino all'aggiornamento di sicurezza Android di marzo 2023.
Sovrascritto ma non troncato
Il nuovo file di immagine più piccolo verrebbe scritto all'inizio di quello vecchio, ma la dimensione del file rimarrebbe la stessa e i dati ora ridondanti e indesiderati alla fine del file originale rimarrebbero dov'erano.
Se hai inviato quel file a qualcun altro e lo ha aperto con uno strumento di visualizzazione o modifica delle immagini convenzionale, il loro software leggeva il file fino a raggiungere un blocco di dati che diceva: “Ecco fatto; puoi fermarti ora e ignorare tutti i dati finali nel file.
In altre parole, il difetto di codifica che ha causato la presenza di dati indesiderati alla fine del file non provocherebbe generalmente errori evidenti, il che presumibilmente spiega perché il bug non è stato individuato fino a poco tempo fa.
Ma se il destinatario lo aprisse con uno strumento software più curioso, come un editor esadecimale o un editor di immagini abilmente modificato, da pochi byte a una grande quantità dell'immagine originale sarebbe ancora lì, oltre la fine ufficiale di indicatore di immagine, in attesa di essere esplorato e potenzialmente esposto.
La maggior parte degli screenshot viene salvata come file PNG, abbreviazione di grafica di rete portatile, e sono compressi internamente utilizzando un algoritmo di compressione noto comunemente come sgonfiare.
I dati rimanenti quindi non sembrano ovviamente righe e colonne di pixel e non possono essere decompressi direttamente dagli strumenti di decompressione convenzionali, che considereranno corrotto il flusso di dati compressi, cosa che è, e di solito rifiuteranno per provare a disimballarlo affatto.
Ma sgonfiare la compressione in genere comprime i suoi dati di input come una sequenza di blocchi, guardando indietro solo finora nell'input per il testo ripetuto (32 Kbyte al massimo, per le corrispondenze lunghe al massimo 258 byte) al fine di ridurre la quantità di memoria necessaria per eseguire l'algoritmo .
Queste restrizioni non sono dovute solo al fatto che il formato risale al 1990 secondi, quando lo spazio della memoria era molto più prezioso di oggi.
"Risincronizzando" regolarmente il compressore, riduci anche il rischio di perdere assolutamente tutto in un file compresso se anche solo pochi byte all'inizio dovessero essere danneggiati.
Potrebbe essere possibile una ricostruzione sostanziale
Ciò significa che i file immagine archiviati in formato PNG compresso possono spesso essere sostanzialmente ricostruiti, anche se porzioni considerevoli dell'originale vengono sovrascritte o altrimenti distrutte.
E se stai parlando di frammenti di immagini che possono essere ricostruiti da un file che è stato ritagliato o oscurato...
…c'è chiaramente la possibilità che i dati rimanenti alla fine, che avrebbero dovuto essere tagliati, contengano porzioni di immagine recuperabili rivelando proprio le parti che intendevi rimuovere definitivamente dall'immagine!
Potresti essere fortunato, certo: se l'immagine viene archiviata riga per riga (quindi i dati per la parte superiore dell'immagine sono vicini all'inizio del file e la parte inferiore è alla fine) e ritagli superiore dell'immagine, probabilmente ti ritroverai con una nuova immagine costituita dalla metà inferiore della vecchia immagine nella parte "ufficiale" del file e dalla metà inferiore ripetuta nei dati rimanenti che avrebbero dovuto essere tagliato ma non lo era.
Ma se ritagli la parte inferiore dell'immagine, il nuovo file avrà la vecchia parte superiore "ufficialmente" ricodificata e scritta sopra l'inizio, e la metà inferiore ritagliata dell'immagine lasciato esattamente dov'era prima, alla fine non ufficiale del nuovo file, in attesa di essere estratto da un utente malintenzionato.
Anche Windows 11 è interessato
Bene, il problema è che questo problema dei file che non vengono troncati quando vengono sostituiti con una nuova versione si applica anche a Windows 11, dove il Strumento di cattura, come l'app Google Pixel Markup, ti consentirà di ritagliare un'immagine senza ritagliare correttamente il file in cui è salvata.
Ad esempio, ecco un file PNG che abbiamo creato con GIMP e salvato con un set minimo di intestazioni e nessuna compressione:
Il file è di 320 × 200 pixel di dati RGB a 8 bit (tre byte per pixel), quindi il file è lungo 320x200x3 byte (192,000), più alcune centinaia di byte di intestazione e altri metadati limitati, per una dimensione totale di 192,590 byte .
Nel dump esadecimale illustrativo di seguito, puoi vedere che i dati sono lunghi 0x20F04E byte, ovvero 192,590 in decimale:
L'abbiamo quindi ritagliato quanto lo consente lo strumento di cattura (48 × 48 pixel sembra essere il minimo) e lo abbiamo salvato su se stesso, ma il "nuovo" file ha finito per avere le stesse dimensioni del file non compresso 320 × 200!
Nel dump esadecimale in basso, la parte evidenziata in rosa in alto è la totalità di ciò che il file ritagliato dovrebbe contenere, con una lunghezza di 0xBD byte o 189 in decimale.
I nuovi dati si concludono con an IEND
blocco di dati, che è dove dovrebbe finire il nuovo file, ma puoi vedere che continua con i dati rimanenti di prima, finendo infine con un duplicato ma ora ridondante IEND
blocco che è stato trasferito dal vecchio file, insieme a quasi tutti i suoi dati di immagine:
Quando abbiamo usato il Risparmi pulsante per scriverlo con un nuovo nome file, il file compresso 48 × 48 è effettivamente uscito a soli 189 byte.
Nota come i dati nel file corrispondono ai 189 byte evidenziati in rosa nell'immagine precedente:
Il bug, quindi, è che il salvataggio di un file su un nome file esistente non tronca prima il vecchio file e non crea un nuovo file con le dimensioni previste.
In poche parole, il file ritagliato è parzialmente sovrascritto, piuttosto che effettivamente sostituito.
Come accennato in precedenza, supponiamo che nessuno abbia notato questo difetto fino ad ora perché i programmi di visualizzazione e modifica delle immagini leggono fino al primo IEND
tag (puoi vederlo nell'angolo in basso a destra dello screenshot qui sopra) e ignorare silenziosamente tutte le cose extra alla fine senza segnalare anomalie o errori.
Cosa fare?
- Se sei un utente di Windows 11. Salva sempre i file ritagliati creati con lo Strumento di cattura con un nuovo nome file, quindi non ci sono contenuti originali che possono essere lasciati indietro.
- Se sei un programmatore. Rivedi ovunque crei "nuovi" file sovrascrivendo quelli vecchi per assicurarti di troncare davvero i file originali quando li apri per la riscrittura. Oppure crea sempre nuovi file salvandoli prima in un file veramente nuovo (utilizza un nome file univoco generato in modo sicuro), quindi eliminando esplicitamente il file originale e rinominando quello nuovo.
A proposito, abbiamo testato Microsoft Paint e, per quanto possiamo vedere, quel programma creerà file ritagliati senza dati rimanenti da prima, sia che tu usi Risparmi (per sostituire un file esistente) o Salva con nome (per produrne uno nuovo).
SCOPRI LE MODALITÀ DI APERTURA DEI FILE PER TE STESSO
Compila questo codice ed eseguilo.
Su Windows, puoi usare minimalisti-C, il nostro costruzione curata della libertà Compilatore Tiny C., se non hai installato un sistema di sviluppo.
Ha una dimensione inferiore a 500 KByte (!), incluso il codice sorgente completo, rispetto ai gigabyte ciascuno per Visual Studio o Clang per Windows.
#includere #includere int main(void) { char* az = "ABCDEFGHIJLKMNOPQRSTUVWXYZ"; int fd; // Crea un file contenente AZ // Octal 0666 significa "leggi/scrivi per tutti" // O_CREAT significa crea se necessario fd = open("blah1.txt",O_WRONLY+O_CREAT,0666); scrivere(fd,az,26); chiudere(fd); // Crea un altro file contenente AZ fd = open("blah2.txt",O_WRONLY+O_CREAT,0666); scrivere(fd,az,26); chiudere(fd); // Scrivi 10 byte senza O_TRUNC impostato // I 16 byte rimanenti dovrebbero rimanere fd = open("blah1.txt",O_WRONLY); write(fd,"----------",10); chiudere(fd); // Scrivi 10 byte *con* O_TRUNC impostato // I vecchi dati rimasti dovrebbero essere eliminati fd = open("blah2.txt",O_WRONLY+O_TRUNC); write(fd,"==========",10); chiudere(fd); ritorno 0; }
Nota la differenza tra l'apertura di un file esistente per la scrittura (O_WRONLY
) con e senza impostare il O_TRUNC
bandiera.
Stampa il contenuto di blah1.txt
ed blah2.txt
dopo aver eseguito il programma di test:
C:UsersduckCROP> petcc64 -stdinc -stdlib test.c Compilatore Tiny C - Copyright (C) 2001-2023 Fabrice Bellard Ridotto da Paul Ducklin per essere utilizzato come strumento di apprendimento Versione petcc64-0.9.27 [0006] - Genera 64 bit Solo PE -> t1.c -> c:/users/duck/tcc/petccinc/fcntl.h . . . . -> C:/Windows/system32/msvcrt.dll -> C:/Windows/system32/kernel32.dll -------------------------- ----- sezione dimensione file virt 1000 200 2a0 .text 2000 600 1cc .data 3000 800 18 .pdata -------------------------- ----- <- t1.exe (2560 byte) C:UsersduckCROP> t1.exe C:UsersduckCROP>dir blah*.txt Il volume nell'unità C non ha etichetta. Il numero di serie del volume è C001-D00D Directory di C:UsersduckCROP 22/03/2023 07:20 pm 26 blah1.txt 22/03/2023 07:20 10 blah2.txt 2 File(s) 36 byte C:UsersduckCROP> type blah1.txt ----------KLMNOPQRSTUVWXYZ C:UsersduckCROP> digitare blah2.txt ==========
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- Platoblockchain. Web3 Metaverse Intelligence. Conoscenza amplificata. Accedi qui.
- Fonte: https://nakedsecurity.sophos.com/2023/03/22/windows-11-also-vulnerable-to-acropalypse-image-data-leakage/
- :È
- $ SU
- 000
- 1
- 10
- 11
- 2023
- 70
- 9
- a
- Chi siamo
- sopra
- Assoluta
- assolutamente
- accettabile
- attività
- effettivamente
- indirizzo
- Dopo shavasana, sedersi in silenzio; saluti;
- algoritmo
- Tutti
- sempre
- americano
- quantità
- ed
- androide
- Un altro
- ovunque
- App
- apparso
- SONO
- AS
- At
- autore
- auto
- precedente
- background-image
- base
- BE
- perché
- prima
- dietro
- essendo
- sotto
- fra
- Nero
- Bloccare
- Blocchi
- sistema
- Parte inferiore
- Scatola
- marca
- Nuovo di zecca
- Insetto
- pulsante
- by
- Materiale
- Può ottenere
- Custodie
- catastrofico
- ha causato
- centro
- certamente
- possibilità
- chiaramente
- Chiudi
- codice
- codifica
- colore
- colonne
- Venire
- comunemente
- rispetto
- interessato
- Conseguenze
- Prendere in considerazione
- Consistente
- contenere
- contiene
- contenuto
- testuali
- continua
- convenzionale
- copyright
- Angolo
- danneggiati
- potuto
- coprire
- creare
- creato
- raccolto
- Pericoloso
- dati
- perdita di dati
- Data
- Date
- affare
- deciso
- merita
- distrutto
- dettagli
- Mercato
- DID
- diverso
- direttamente
- Dsiplay
- documento
- non
- Dont
- giù
- guidare
- lancio
- soprannominato
- cumulo di rifiuti
- ogni
- editore
- Intero
- interamente
- interezza
- errori
- Anche
- Evento
- EVER
- tutti
- qualunque cosa
- di preciso
- esempio
- eccitato
- esistente
- previsto
- Spiega
- Esplorazione
- esposto
- extra
- pochi
- Compila il
- File
- Nome
- difetto
- seguire
- Nel
- formato
- essere trovato
- Gratis
- Amico
- da
- pieno
- generalmente
- genera
- ottenere
- Metà
- successo
- Avere
- intestazioni
- altezza
- HEX
- Evidenziato
- librarsi
- Come
- HTTPS
- Immagine
- impressionante
- in
- Compreso
- ingresso
- installato
- interesse
- internamente
- IT
- SUO
- stessa
- gergo
- conosciuto
- Discografica
- apprendimento
- piace
- probabile
- Limitato
- Lista
- Lunghi
- Guarda
- cerca
- a
- make
- Marzo
- Margine
- marcatore
- max-width
- massimo
- significato
- si intende
- Media
- Memorie
- menzionato
- Metadati
- Microsoft
- In mezzo
- forza
- minimo
- ordine
- Mobile
- modalità di
- modificato
- Scopri di più
- maggior parte
- Nome
- Rete
- New
- normale
- numero
- oscurato
- ovvio
- of
- ufficiale
- Vecchio
- on
- ONE
- online
- aprire
- ha aperto
- apertura
- minimo
- i
- Altro
- altrimenti
- proprio
- Oxford
- parte
- Ricambi
- passato
- Paul
- Persone
- permanentemente
- telefoni
- pixel
- Platone
- Platone Data Intelligence
- PlatoneDati
- più
- ritrae
- posizione
- Post
- Post
- potenzialmente
- Prezioso
- preferire
- precedente
- principio
- probabilmente
- Problema
- produrre
- Programma
- Programmatore
- Programmi
- fornitore
- metti
- tasso
- piuttosto
- a raggiunto
- Leggi
- recentemente
- ridurre
- Basic
- rimanere
- rimuovere
- rimozione
- ripetuto
- sostituire
- sostituito
- Reportistica
- restrizioni
- ritorno
- recensioni
- riscrittura
- RGB
- Rischio
- Correre
- running
- s
- Suddetto
- stesso
- Risparmi
- risparmio
- Scala
- allo
- screenshot
- Sezione
- problemi di
- sembra
- delicata
- Sequenza
- serial
- set
- regolazione
- Condividi
- Corti
- dovrebbero
- Taglia
- piccole
- inferiore
- So
- finora
- Social
- Social Media
- Software
- solido
- alcuni
- Qualcuno
- Fonte
- codice sorgente
- lo spazio
- parlando
- inizia a
- soggiorno
- Ancora
- Fermare
- memorizzati
- ruscello
- studio
- tale
- suppone
- SVG
- sistema
- T1
- TAG
- parlando
- test
- che
- I
- il mondo
- loro
- Li
- perciò
- cosa
- tre
- tempo
- a
- oggi
- strumenti
- top
- Totale
- Trailing
- transizione
- trasparente
- innescare
- Svolta
- tipicamente
- in definitiva
- per
- Comprensibilmente
- unico
- Apertura della confezione
- non desiderato
- Aggiornanento
- URL
- uso
- Utente
- generalmente
- Fisso
- versione
- volume
- Vulnerabile
- In attesa
- Modo..
- Che
- se
- quale
- tutto
- larghezza
- volere
- disposto
- finestre
- finestre 11
- con
- senza
- chiedendosi
- Word
- parole
- mondo
- sarebbe
- scrivere
- scrittura
- scritto
- Tu
- Trasferimento da aeroporto a Sharm
- zefiro