I går skrev vi åbenbart om en fejl i Google Pixel-telefoner nu lappetmed potentielt farlige konsekvenser.
Fejlfinderne, forståeligt nok begejstrede (og bekymrede) over det, de havde fundet, besluttede at følge BWAIN-princippet for maksimum, og forvandlede det til en Bug med et imponerende navn: aCropalypse.
Hvis du undrer dig, betyder ordet apokalypse bogstaveligt talt enhver form for åbenbaring, men det bruges normalt til at henvise til den bibelske tekst kendt som Johannes' åbenbaring, som portrætterer verdens undergang.
Således er dens metaforiske betydning, med ordene fra New Oxford American Dictionary, "en begivenhed, der involverer ødelæggelse eller beskadigelse af en forfærdelig eller katastrofal skala."
Vi er ikke helt overbeviste om, at denne fejl fortjener sådan et, ahhhh, apokalyptisk navn, men vi er villige til at indrømme, at i en verden, hvor awesome kan betyde "ganske godt", er navnet sandsynligvis acceptabelt, hvis ikke helt usædvanligt.
"Crop" i "aCropalypse"
"Crop"-delen af navnet kommer fra den aktivitet, der med størst sandsynlighed vil udløse fejlen, kaldet CVE-2023-20136 i sin Google-inkarnation: beskæring af fotos eller skærmbilleder for at fjerne følsomme eller uønskede dele, før du deler dem.
Løst sagt kan du forestille dig, at hvis du for eksempel tog et 1080×1980 skærmbillede af hele din telefons skærm, ville du sandsynligvis ikke have lyst til at lægge hele billedet online eller sende det hele til en ven.
De fleste mennesker foretrækker at beskære i det mindste toppen af skærmbilledet og dermed fjerne detaljer såsom navnet på deres mobiludbyder, datoen og klokkeslættet.
Og hvis du f.eks. snappede en e-mail eller et opslag på sociale medier midt på en liste, ville du næsten helt sikkert ønske at skjule de e-mails eller opslag, der dukkede op lige over eller lige under interessedelen.
Selv efter at du har beskåret billedet, vil du måske også redigere dele af det (et jargonord, der betyder at skjule eller censurere en del af et dokument), for eksempel ved at slippe en sort boks over afsenderens navn, e-mailadresse, telefonnummer eller hvad som helst .
I hvert fald kan du antage, at hvis du huggede bidder af originalen ud, slørede nogle detaljer med blokke af ensfarvede farver (som komprimeres meget lettere end almindelige billeddata) og gemte det nye billede over det gamle ...
...at det nye billede næsten helt sikkert ville være mindre, muligvis meget mindre, end originalen.
På grund af alle de ting, du har udeladt!
Men det er ikke, hvad der skete på Google Pixel-telefoner, i det mindste indtil Android-sikkerhedsopdateringen fra marts 2023.
Overskrevet, men ikke afkortet
Den nye, mindre billedfil ville blive skrevet over starten af den gamle, men filstørrelsen ville forblive den samme, og de nu overflødige og uønskede data i slutningen af den originale fil ville blive, hvor de var.
Hvis du sendte den fil til en anden, og de åbnede den med et konventionelt billedvisnings- eller redigeringsværktøj, ville deres software læse filen, indtil den nåede en datadel, der sagde: "Det var det; du kan stoppe nu og ignorere eventuelle efterfølgende data i filen."
Med andre ord ville kodningsfejlen, der forårsagede, at uønskede data blev efterladt i slutningen af filen, generelt ikke fremkalde nogen åbenlyse fejl, hvilket formentlig forklarer, hvorfor fejlen ikke blev opdaget før for nylig.
Men hvis modtageren åbnede det med et mere nysgerrigt softwareværktøj, såsom en hex-editor eller en snedig modificeret billededitor, ville alt fra et par bytes til en stor mængde af det originale billede stadig være der, forbi den officielle slutning af- billedmarkør, der venter på at blive udforsket og potentielt eksponeret.
De fleste skærmbilleder gemmes som PNG-filer, en forkortelse for bærbar netværksgrafik, og er internt komprimeret ved hjælp af en komprimeringsalgoritme kendt almindeligvis som punktere.
De tiloversblevne data ligner derfor ikke åbenlyst rækker og kolonner af pixels, og de kan ikke direkte dekomprimeres med konventionelle udpakningsværktøjer, som vil betragte den komprimerede datastrøm for at være korrupt, hvilket den er, og normalt vil nægte for overhovedet at prøve at pakke den ud.
Men punktere komprimering klemmer typisk sine inputdata som en sekvens af blokke, og ser kun tilbage så langt i input for gentagen tekst (32 Kbytes højst, for matches højst 258 bytes lang) for at reducere mængden af hukommelse, der er nødvendig for at køre algoritmen .
Disse begrænsninger skyldes ikke kun, at formatet går tilbage til 1990s, da hukommelsesplads var meget mere værdifuld end i dag.
Ved at "gensynkronisere" kompressoren med jævne mellemrum, mindsker du også risikoen for at miste absolut alt i en komprimeret fil, hvis blot nogle få bytes i starten skulle blive ødelagt.
En væsentlig rekonstruktion kan være mulig
Det betyder, at billedfiler, der er gemt i komprimeret PNG-format, ofte kan rekonstrueres væsentligt, selvom store bidder af originalen overskrives eller på anden måde ødelægges.
Og hvis du taler om billedfragmenter, der kan rekonstrueres fra en fil, der er blevet beskåret eller redigeret...
…der er helt klart en chance for, at de resterende data i slutningen, der skulle hakkes af, vil indeholde genskabelige billeddele afslører netop de dele, du havde til hensigt at fjerne permanent fra billedet!
Du kan være heldig, for at være sikker: hvis billedet er gemt række-for-række (så dataene for toppen af billedet er tæt på starten af filen, og bunden er i slutningen), og du beskærer toppen af billedet, vil du sandsynligvis ende med et nyt billede bestående af den nederste halvdel af det gamle billede i den "officielle" del af filen, og den nederste halvdel gentaget i de resterende data, der skulle være hugget af, men var det ikke.
Men hvis du beskærer bunden af billedet, vil den nye fil have den gamle øverste del "officielt" omkodet og skrevet over starten, og den beskåret nederste halvdel af billedet efterladt præcis, hvor det var før, i den uofficielle ende af den nye fil, venter på at blive udtrukket af en angriber.
Windows 11 er også berørt
Nå, aftalen er, at dette problem med, at filer ikke afkortes, når de erstattes med en ny version, også gælder på Windows 11, hvor Klippeværktøj, ligesom Google Pixel Markup-appen, giver dig mulighed for at beskære et billede uden at beskære den fil, det er gemt i, korrekt.
For eksempel er her en PNG-fil, vi har oprettet med GIMP og gemt med et minimalt sæt overskrifter og ingen komprimering:
Filen er 320×200 pixels med 8-bit RGB-data (tre bytes pr. pixel), så filen er 320x200x3 bytes lang (192,000), plus et par hundrede bytes header og andre begrænsede metadata, til en samlet størrelse på 192,590 bytes .
I det illustrative hex-dump nedenfor kan du se, at dataene er 0x20F04E bytes lange, hvilket er 192,590 i decimal:
Vi beskærede den så lille, som Snipping Tool tillader (48×48 pixels ser ud til at være minimum) og gemte den tilbage over sig selv, men den "nye" fil endte med samme størrelse som den ukomprimerede 320×200 fil!
I hex-dumpen nedenfor er den del, der er fremhævet i pink øverst, hele det, den beskårne fil skal indeholde, med en længde på 0xBD bytes eller 189 i decimal.
De nye data afsluttes med en IEND
datablok, som er der, hvor den nye fil skal slutte, men du kan se, at den fortsætter med de tilbageværende data fra før, og i sidste ende afsluttes med en duplikat-men-nu-redundant IEND
blok, der er blevet overført fra den gamle fil, sammen med næsten alle dens billeddata:
Da vi brugte Gem knappen for at skrive det ud under et helt nyt filnavn, den komprimerede 48×48 fil kom faktisk ud på kun 189 bytes lang.
Bemærk, hvordan dataene i filen matcher de 189 bytes, der er fremhævet med pink i det forrige billede:
Fejlen er derfor, at det at gemme en fil tilbage over et eksisterende filnavn ikke afkorter den gamle fil først, og skaber ikke en ny fil med den forventede størrelse.
Kort sagt er den beskårede fil delvist overskrevet, snarere end faktisk udskiftes.
Som nævnt ovenfor gætter vi på, at ingen har opdaget denne fejl indtil nu, fordi billedvisnings- og redigeringsprogrammer læste op indtil den første IEND
tag (du kan se dette i nederste højre hjørne af skærmbilledet ovenfor), og ignorer lydløst alle de ekstra ting i slutningen uden at rapportere nogen uregelmæssigheder eller fejl.
Hvad skal jeg gøre?
- Hvis du er Windows 11-bruger. Gem altid beskårne filer, der er oprettet med klippeværktøjet, under et nyt filnavn, så der ikke er noget originalt indhold i det, der kan blive efterladt.
- Hvis du er programmør. Gennemgå overalt, hvor du opretter "nye" filer ved at overskrive gamle for at sikre, at du virkelig afkorter de originale filer, når du åbner dem til omskrivning. Eller opret kun nye filer ved først at gemme dem i en ægte ny fil (brug et sikkert genereret unikt filnavn), derefter eksplicit at slette den originale fil og omdøbe den nye.
Vi har i øvrigt testet Microsoft Paint, og så vidt vi kan se, vil det program oprette beskårne filer uden data tilbage fra før, uanset om du bruger Gem (for at erstatte en eksisterende fil) eller Gem som (for at producere en ny).
LÆR OM FILÅBNE TILSTAND FOR DIG SELV
Kompiler denne kode og kør den.
På Windows kan du bruge minimalistisk-C, vores egen kurateret opbygning af det gratis Lille C-kompiler, hvis du ikke har et udviklingssystem installeret.
Det er under 500 KBytes i størrelse (!), inklusive fuld kildekode, sammenlignet med gigabyte hver for Visual Studio eller Clang til Windows.
#omfatte #omfatte int main(void) { char* az = "ABCDEFGHIJLKMNOPQRSTUVWXYZ"; int fd; // Opret en fil med AZ i // Octal 0666 betyder "læse/skriv for alle" // O_CREAT betyder oprettelse, hvis det er nødvendigt fd = open("blah1.txt",O_WRONLY+O_CREAT,0666); skriv(fd,az,26); lukke(fd); // Opret endnu en fil med AZ i fd = open("blah2.txt",O_WRONLY+O_CREAT,0666); skriv(fd,az,26); lukke(fd); // Skriv 10 bytes uden O_TRUNC sat // De resterende 16 bytes skal forblive fd = open("blah1.txt",O_WRONLY); skriv(fd,"----------------",10); lukke(fd); // Skriv 10 bytes *med* O_TRUNC sat // Tilbageværende gamle data skal skæres af fd = open("blah2.txt",O_WRONLY+O_TRUNC); skriv(fd,"==========",10); lukke(fd); returnere 0; }
Bemærk forskellen mellem at åbne en eksisterende fil til skrivning (O_WRONLY
) med og uden indstilling af O_TRUNC
flag.
Print indholdet af blah1.txt
, blah2.txt
efter at have kørt testprogrammet:
C:UsersduckCROP> petcc64 -stdinc -stdlib test.c Tiny C Compiler - Copyright (C) 2001-2023 Fabrice Bellard strippet ned af Paul Ducklin til brug som et læringsværktøj Version petcc64-0.9.27 [0006] - Genererer 64-bit Kun PE'er -> t1.c -> c:/users/duck/tcc/petccinc/fcntl.h . . . . -> C:/Windows/system32/msvcrt.dll -> C:/Windows/system32/kernel32.dll -------------------------- ----- virt filstørrelse sektion 1000 200 2a0 .text 2000 600 1cc .data 3000 800 18 .pdata -------------------------- ----- <- t1.exe (2560 bytes) C:UsersduckCROP> t1.exe C:UsersduckCROP>dir bla*.txt Volumen i drev C har ingen etiket. Volumens serienummer er C001-D00D Directory of C:UsersduckCROP 22/03/2023 07:20 pm 26 blah1.txt 22/03/2023 07:20 pm 10 blah2.txt 2 Fil(er) 36 bytes C:OP>UserseduckCR blah1.txt ----------KLMNOPQRSTUVWXYZ C:UsersduckCROP> skriv blah2.txt ===========
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- Platoblokkæde. Web3 Metaverse Intelligence. Viden forstærket. Adgang her.
- Kilde: https://nakedsecurity.sophos.com/2023/03/22/windows-11-also-vulnerable-to-acropalypse-image-data-leakage/
- :er
- $OP
- 000
- 1
- 10
- 11
- 2023
- 70
- 9
- a
- Om
- over
- absolutte
- absolut
- acceptabel
- aktivitet
- faktisk
- adresse
- Efter
- algoritme
- Alle
- altid
- amerikansk
- beløb
- ,
- android
- En anden
- overalt
- app
- dukkede
- ER
- AS
- At
- forfatter
- auto
- tilbage
- background-billede
- grundlag
- BE
- fordi
- før
- bag
- være
- jf. nedenstående
- mellem
- Sort
- Bloker
- Blocks
- grænse
- Bund
- Boks
- brand
- Brand New
- Bug
- .
- by
- CAN
- Kan få
- tilfælde
- katastrofale
- forårsagede
- center
- sikkert
- chance
- tydeligt
- Luk
- kode
- Kodning
- farve
- Kolonner
- Kom
- almindeligt
- sammenlignet
- pågældende
- Konsekvenser
- Overvej
- Bestående
- indeholder
- indeholder
- indhold
- indhold
- fortsætter
- konventionelle
- ophavsret
- Corner
- beskadiget
- kunne
- dæksel
- skabe
- oprettet
- afgrøde
- Dangerous
- data
- datalækage
- Dato
- Datoer
- deal
- besluttede
- fortjener
- ødelagt
- detaljer
- Udvikling
- DID
- forskellige
- direkte
- Skærm
- dokumentet
- Er ikke
- Dont
- ned
- køre
- Dropper
- døbt
- dumpe
- hver
- editor
- emails
- Hele
- helt
- helhed
- fejl
- Endog
- begivenhed
- NOGENSINDE
- alle
- at alt
- præcist nok
- eksempel
- ophidset
- eksisterende
- forventet
- Forklarer
- udforsket
- udsat
- ekstra
- få
- File (Felt)
- Filer
- Fornavn
- fejl
- følger
- Til
- format
- fundet
- Gratis
- ven
- fra
- fuld
- generelt
- genererer
- få
- Halvdelen
- skete
- Have
- headers
- højde
- HEX
- Fremhævet
- hover
- Hvordan
- HTTPS
- billede
- imponerende
- in
- Herunder
- indgang
- installeret
- interesse
- internt
- IT
- ITS
- selv
- jargon
- kendt
- etiket
- læring
- ligesom
- Sandsynlig
- Limited
- Liste
- Lang
- Se
- leder
- miste
- lave
- Marts
- Margin
- markør
- max-bredde
- maksimal
- betyder
- midler
- Medier
- Hukommelse
- nævnte
- Metadata
- microsoft
- Mellemøsten
- måske
- mindste
- minimum
- Mobil
- modes
- modificeret
- mere
- mest
- navn
- netværk
- Ny
- normal
- nummer
- sløres
- Obvious
- of
- officiel
- Gammel
- on
- ONE
- online
- åbent
- åbnet
- åbning
- ordrer
- original
- Andet
- Ellers
- egen
- Oxford
- del
- dele
- forbi
- paul
- Mennesker
- permanent
- telefoner
- pixel
- plato
- Platon Data Intelligence
- PlatoData
- plus
- portrætterer
- position
- Indlæg
- Indlæg
- potentielt
- Kostbar
- foretrække
- tidligere
- princippet
- sandsynligvis
- Problem
- producere
- Program
- programmør
- Programmer
- udbyder
- sætte
- Sats
- hellere
- nået
- Læs
- for nylig
- reducere
- fast
- forblive
- Fjern
- fjernelse
- gentaget
- erstatte
- udskiftes
- Rapportering
- restriktioner
- afkast
- gennemgå
- omskrivning
- RGB
- Risiko
- Kør
- kører
- s
- Said
- samme
- Gem
- besparelse
- Scale
- Skærm
- screenshots
- Sektion
- sikkerhed
- synes
- følsom
- Sequence
- seriel
- sæt
- indstilling
- Del
- Kort
- bør
- Størrelse
- lille
- mindre
- So
- indtil nu
- Social
- sociale medier
- Software
- solid
- nogle
- Nogen
- Kilde
- kildekode
- Space
- taler
- starte
- forblive
- Stadig
- Stands
- opbevaret
- strøm
- Studio
- sådan
- formodes
- SVG
- systemet
- T1
- TAG
- taler
- prøve
- at
- verdenen
- deres
- Them
- derfor
- ting
- tre
- tid
- til
- i dag
- værktøj
- værktøjer
- top
- I alt
- Trailing
- overgang
- gennemsigtig
- udløse
- Drejning
- typisk
- Ultimativt
- under
- Forståeligt nok
- enestående
- Udpakning
- uønsket
- Opdatering
- URL
- brug
- Bruger
- sædvanligvis
- Vast
- udgave
- bind
- Sårbar
- Venter
- Vej..
- Hvad
- hvorvidt
- som
- Hele
- bredde
- vilje
- villig
- vinduer
- Windows 11
- med
- uden
- undrende
- ord
- ord
- world
- ville
- skriver
- skrivning
- skriftlig
- Du
- Din
- zephyrnet