Gisteren schreven we blijkbaar over een bug in Google Pixel-telefoons nu gepatcht, met potentieel gevaarlijke gevolgen.
De bugvinders, begrijpelijkerwijs opgewonden (en bezorgd) over wat ze hadden gevonden, besloten het BWAIN-principe maximaal te volgen en er een Bug met een indrukwekkende naam: aCropalyps.
Voor het geval je het je afvraagt, het woord apocalyps betekent letterlijk elke vorm van openbaring, maar het wordt meestal gebruikt om te verwijzen naar de bijbelse tekst die bekend staat als de Openbaring van St. John, die het einde van de wereld uitbeeldt.
De metaforische betekenis ervan, in de woorden van de New Oxford American Dictionary, is dus "een gebeurtenis met vernietiging of schade op een ontzagwekkende of catastrofale schaal".
We zijn er niet helemaal van overtuigd dat deze bug zo'n, ahhhh, apocalyptische naam verdient, maar we zijn bereid toe te geven dat in een wereld waar geweldig "redelijk goed" kan betekenen, de naam waarschijnlijk acceptabel is, zo niet helemaal onaantastbaar.
De "gewas" in "aCropalypse"
Het "crop" -gedeelte van de naam komt van de activiteit die de bug het meest waarschijnlijk veroorzaakt, genaamd CVE-2023-20136 in zijn Google-incarnatie: foto's of schermafbeeldingen bijsnijden om gevoelige of ongewenste delen te verwijderen voordat u ze deelt.
Losjes gezegd kun je je voorstellen dat als je bijvoorbeeld een screenshot van 1080×1980 zou maken van het volledige scherm van je telefoon, je waarschijnlijk niet de hele afbeelding online zou willen plaatsen of naar een vriend zou willen sturen.
De meeste mensen zouden er de voorkeur aan geven om in ieder geval de bovenkant van de schermafbeelding af te snijden, waardoor details zoals de naam van hun mobiele provider, de datum en de tijd worden verwijderd.
En als u bijvoorbeeld een e-mail of een bericht op sociale media in het midden van een lijst zou plaatsen, zou u vrijwel zeker de e-mails of berichten willen verbergen die net boven of net onder het deel van uw interesse verschenen.
Zelfs nadat je de afbeelding hebt bijgesneden, wil je misschien ook delen ervan redigeren (een jargonwoord dat betekent een deel van een document verbergen of censureren), bijvoorbeeld door een zwart kader over de naam, het e-mailadres, het telefoonnummer of wat dan ook van de afzender te plaatsen .
In ieder geval zou je kunnen aannemen dat als je stukjes van het origineel weghakte, enkele details verduisterde met blokken van effen kleur (die veel gemakkelijker comprimeren dan gewone afbeeldingsgegevens), en de nieuwe afbeelding over de oude heen opsloeg...
...dat de nieuwe afbeelding vrijwel zeker kleiner, mogelijk veel kleiner, zou zijn dan het origineel.
Door alle dingen die je hebt weggelaten!
Maar dat is niet wat er gebeurde op Google Pixel-telefoons, in ieder geval tot de Android-beveiligingsupdate van maart 2023.
Overschreven maar niet afgekapt
Het nieuwe, kleinere afbeeldingsbestand zou over het begin van het oude worden geschreven, maar de bestandsgrootte zou hetzelfde blijven en de nu overbodige en ongewenste gegevens aan het einde van het originele bestand zouden blijven waar ze waren.
Als je dat bestand naar iemand anders stuurde en zij het openden met een conventionele tool voor het bekijken of bewerken van afbeeldingen, zou hun software het bestand lezen totdat het een gegevensblok bereikte dat zei: “Dat is het; je kunt nu stoppen en eventuele achterliggende gegevens in het bestand negeren.”
Met andere woorden, de coderingsfout die ervoor zorgde dat ongewenste gegevens aan het einde van het bestand achterbleven, veroorzaakte over het algemeen geen duidelijke fouten, wat vermoedelijk verklaart waarom de bug pas onlangs werd opgemerkt.
Maar als de ontvanger het zou openen met een meer nieuwsgierige softwaretool, zoals een hex-editor of een sluw gewijzigde afbeeldingseditor, dan zou er nog steeds een paar bytes tot een enorme hoeveelheid van de originele afbeelding aanwezig zijn, voorbij het officiële einde van- beeldmarkering, wachtend om verkend en mogelijk blootgesteld te worden.
De meeste schermafbeeldingen worden opgeslagen als PNG-bestanden, een afkorting van Draagbare netwerkgrafieken, en zijn intern gecomprimeerd met behulp van een compressie-algoritme dat algemeen bekend staat als deflatie veroorzaken.
De achtergebleven gegevens zien er daarom niet duidelijk uit als rijen en kolommen met pixels, en kunnen niet direct worden gedecomprimeerd door conventionele uitpaktools, die de gecomprimeerde gegevensstroom als corrupt zullen beschouwen, wat het is, en meestal zullen weigeren om te proberen het helemaal uit te pakken.
Maar deflatie veroorzaken compressie comprimeert de invoergegevens doorgaans als een reeks blokken, waarbij slechts tot nu toe in de invoer wordt teruggekeken voor herhaalde tekst (maximaal 32 Kbytes, voor overeenkomsten van maximaal 258 bytes lang) om de hoeveelheid geheugen die nodig is om het algoritme uit te voeren te verminderen .
Die beperkingen zijn niet alleen te wijten aan het feit dat het formaat dateert uit de 1990s, toen geheugenruimte veel kostbaarder was dan nu.
Door de compressor regelmatig te "hersynchroniseren", verkleint u ook het risico om absoluut alles in een gecomprimeerd bestand te verliezen, zelfs als er maar een paar bytes aan het begin beschadigd zouden raken.
Een ingrijpende reconstructie is mogelijk
Dit betekent dat afbeeldingsbestanden die zijn opgeslagen in gecomprimeerde PNG-indeling vaak aanzienlijk kunnen worden gereconstrueerd, zelfs als grote delen van het origineel worden overschreven of anderszins worden vernietigd.
En als je het hebt over beeldfragmenten die kunnen worden gereconstrueerd uit een bestand dat is bijgesneden of geredigeerd...
…er is duidelijk een kans dat de overgebleven gegevens aan het eind, die eigenlijk hadden moeten worden afgehakt, herstelbare beelddelen bevatten het onthullen van de delen die u permanent van de afbeelding wilde verwijderen!
U kunt zeker geluk hebben: als de afbeelding rij voor rij wordt opgeslagen (zodat de gegevens voor de bovenkant van de afbeelding zich dicht bij het begin van het bestand bevinden en de onderkant aan het einde), en u snijdt de bovenkant van de afbeelding, zul je waarschijnlijk eindigen met een nieuwe afbeelding bestaande uit de onderste helft van de oude afbeelding in het "officiële" deel van het bestand, en de onderste helft herhaald in de overgebleven gegevens die verondersteld werden te zijn afgehakt maar was het niet.
Maar als u de onderkant van de afbeelding bijsnijdt, zal het oude bovenste gedeelte van het nieuwe bestand "officieel" opnieuw worden gecodeerd en over het begin worden geschreven, en de bijgesneden onderste helft van de afbeelding achtergelaten precies waar het eerder was, in het niet-officiële einde van het nieuwe bestand, wachtend om te worden uitgepakt door een aanvaller.
Windows 11 ook getroffen
Welnu, de deal is dat dit probleem van bestanden die niet worden afgekapt wanneer ze worden vervangen door een nieuwe versie, ook van toepassing is op Windows 11, waar de Knipprogramma, zoals de Google Pixel Markup-app, kunt u een afbeelding bijsnijden zonder het bestand waarin het is opgeslagen correct bij te snijden.
Hier is bijvoorbeeld een PNG-bestand dat we hebben gemaakt met GIMP en opgeslagen met een minimale set headers en zonder compressie:
Het bestand is 320 × 200 pixels van 8-bits RGB-gegevens (drie bytes per pixel), dus het bestand is 320x200x3 bytes lang (192,000), plus een paar honderd bytes aan header en andere beperkte metadata, voor een totale grootte van 192,590 bytes .
In de illustratieve hex-dump hieronder kunt u zien dat de gegevens 0x20F04E bytes lang zijn, wat 192,590 in decimalen is:
We hebben het vervolgens zo klein bijgesneden als het knipprogramma toestaat (48×48 pixels lijkt het minimum te zijn) en hebben het over zichzelf opgeslagen, maar het "nieuwe" bestand heeft uiteindelijk dezelfde grootte gekregen als het niet-gecomprimeerde bestand van 320×200!
In de onderstaande hex-dump is het gedeelte dat bovenaan in roze is gemarkeerd, het geheel van wat het bijgesneden bestand zou moeten bevatten, met een lengte van 0xBD bytes of 189 in decimalen.
De nieuwe gegevens worden afgesloten met een IEND
datablok, waar het nieuwe bestand zou moeten eindigen, maar je kunt zien dat het doorgaat met de overgebleven gegevens van vroeger, en uiteindelijk eindigt met een duplicaat-maar-nu-redundant IEND
blok dat is overgenomen uit het oude bestand, samen met bijna alle afbeeldingsgegevens:
Toen we de Bespaar knop om het uit te schrijven onder een geheel nieuwe bestandsnaam, kwam het gecomprimeerde 48×48-bestand inderdaad uit op slechts 189 bytes lang.
Merk op hoe de gegevens in het bestand overeenkomen met de 189 bytes die roze zijn gemarkeerd in de vorige afbeelding:
De bug is daarom dat het opslaan van een bestand over een bestaande bestandsnaam niet eerst het oude bestand afkapt en geen nieuw bestand met de verwachte grootte maakt.
Simpel gezegd, het bijgesneden bestand is gedeeltelijk overschreven, in plaats van eigenlijk vervangen.
Zoals hierboven vermeld, vermoeden we dat niemand deze fout tot nu toe heeft opgemerkt, omdat programma's voor het bekijken en bewerken van afbeeldingen tot de eerste IEND
tag (je kunt dit zien in de rechterbenedenhoek van de schermafbeelding hierboven), en negeer stilzwijgend alle extra dingen aan het einde zonder anomalieën of fouten te melden.
Wat te doen?
- Als u een Windows 11-gebruiker bent. Bewaar bijgesneden bestanden die met het Knipprogramma zijn gemaakt altijd onder een nieuwe bestandsnaam, zodat er geen originele inhoud in zit die kan worden achtergelaten.
- Als je een programmeur bent. Controleer overal waar u "nieuwe" bestanden maakt door oude te overschrijven om er zeker van te zijn dat u de originele bestanden echt afkapt wanneer u ze opent om te herschrijven. Of maak alleen nieuwe bestanden aan door ze eerst op te slaan in een echt nieuw bestand (gebruik een veilig gegenereerde unieke bestandsnaam), daarna expliciet het originele bestand te verwijderen en het nieuwe bestand een andere naam te geven.
Trouwens, we hebben Microsoft Paint getest en voor zover we kunnen zien, maakt dat programma bijgesneden bestanden zonder overgebleven gegevens van vroeger, of je nu Bespaar (om een bestaand bestand te vervangen) of Opslaan als (om een nieuwe te maken).
LEER VOOR JEZELF OVER DE MODI VOOR HET OPENEN VAN BESTANDEN
Compileer deze code en voer deze uit.
Op Windows kunt u minimalistisch, ons eigen samengesteld bouwen van de gratis Tiny C-compiler, als u geen ontwikkelsysteem hebt geïnstalleerd.
Het is minder dan 500 KBytes groot (!), inclusief volledige broncode, vergeleken met gigabytes elk voor Visual Studio of Clang voor Windows.
#erbij betrekken #erbij betrekken int main(void) { char* az = "ABCDEFGHIJLKMNOPQRSTUVWXYZ"; int fd; // Maak een bestand aan met AZ erin // Octal 0666 betekent "lezen/schrijven voor iedereen" // O_CREAT betekent creëren indien nodig fd = open("blah1.txt",O_WRONLY+O_CREAT,0666); schrijf(fd,az,26); sluiten(fd); // Maak nog een bestand met AZ erin fd = open("blah2.txt",O_WRONLY+O_CREAT,0666); schrijf(fd,az,26); sluiten(fd); // Schrijf 10 bytes zonder O_TRUNC ingesteld // De overgebleven 16 bytes moeten fd = open("blah1.txt",O_WRONLY) blijven; schrijf(fd,"----------",10); sluiten(fd); // Schrijf 10 bytes *met* O_TRUNC ingesteld // Overgebleven oude gegevens moeten worden afgehakt fd = open("blah2.txt",O_WRONLY+O_TRUNC); schrijf(fd,"==========",10); sluiten(fd); geef 0 terug; }
Let op het verschil tussen het openen van een bestaand bestand om te schrijven (O_WRONLY
) met en zonder instelling van de O_TRUNC
vlag.
Print de inhoud van blah1.txt
en blah2.txt
na het uitvoeren van het testprogramma:
C:UsersduckCROP> petcc64 -stdinc -stdlib test.c Tiny C Compiler - Copyright (C) 2001-2023 Fabrice Bellard Gestript door Paul Ducklin voor gebruik als leermiddel Versie petcc64-0.9.27 [0006] - Genereert 64-bit Alleen PE's -> t1.c -> c:/users/duck/tcc/petccinc/fcntl.h . . . . -> C:/Windows/system32/msvcrt.dll -> C:/Windows/system32/kernel32.dll ----------------------------------------- ----- virt bestandsgrootte sectie 1000 200 2a0 .text 2000 600 1cc .data 3000 800 18 .pdata ------------------------- ----- <- t1.exe (2560 bytes) C:UsersduckCROP> t1.exe C:UsersduckCROP>dir blah*.txt Volume in station C heeft geen label. Volumeserienummer is C001-D00D Directory van C:UsersduckCROP 22/03/2023 07:20 26 blah1.txt 22/03/2023 07:20 10 blah2.txt 2 Bestand(en) 36 bytes C:UsersduckCROP> type blah1.txt ----------KLMNOPQRSTUVWXYZ C:UsersduckCROP> type blah2.txt ==========
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- Platoblockchain. Web3 Metaverse Intelligentie. Kennis versterkt. Toegang hier.
- Bron: https://nakedsecurity.sophos.com/2023/03/22/windows-11-also-vulnerable-to-acropalypse-image-data-leakage/
- :is
- $UP
- 000
- 1
- 10
- 11
- 2023
- 70
- 9
- a
- Over
- boven
- absoluut
- absoluut
- aanvaardbaar
- activiteit
- werkelijk
- adres
- Na
- algoritme
- Alles
- altijd
- Amerikaans
- bedragen
- en
- android
- Nog een
- overal
- gebruiken
- verscheen
- ZIJN
- AS
- At
- auteur
- auto
- terug
- background-image
- basis
- BE
- omdat
- vaardigheden
- achter
- wezen
- onder
- tussen
- Zwart
- Blok
- Blokken
- grens
- Onder
- Box camera's
- merk
- Brand New
- Bug
- by
- CAN
- Kan krijgen
- geval
- katastrofisch
- veroorzaakt
- Centreren
- zeker
- kans
- duidelijk
- Sluiten
- code
- codering
- kleur
- columns
- hoe
- algemeen
- vergeleken
- betrokken
- Gevolgen
- Overwegen
- bestaande uit
- bevat
- content
- inhoud
- blijft
- conventioneel
- auteursrecht
- Hoek
- correct
- corrupt
- kon
- deksel
- en je merk te creëren
- aangemaakt
- gewas
- gevaarlijk
- gegevens
- data lekkage
- Datum
- Data
- transactie
- beslist
- verdient
- vernietigd
- gegevens
- Ontwikkeling
- DEED
- anders
- direct
- Display
- document
- Nee
- Dont
- beneden
- rit
- dropping
- nagesynchroniseerde
- storten
- elk
- editor
- e-mails
- Geheel
- geheel
- geheel
- fouten
- Zelfs
- Event
- OOIT
- iedereen
- alles
- precies
- voorbeeld
- opgewonden
- bestaand
- verwacht
- Verklaart
- Nagegaan
- blootgestelde
- extra
- ver
- weinig
- Dien in
- Bestanden
- Voornaam*
- fout
- volgen
- Voor
- formaat
- gevonden
- Gratis
- vriend
- oppompen van
- vol
- algemeen
- genereert
- krijgen
- Kopen Google Reviews
- Helft
- gebeurd
- Hebben
- headers
- Hoogte
- HEX
- Gemarkeerd
- zweven
- Hoe
- HTTPS
- beeld
- indrukwekkend
- in
- Inclusief
- invoer
- geïnstalleerd
- belang
- inwendig
- IT
- HAAR
- zelf
- jargon
- bekend
- label
- leren
- als
- Waarschijnlijk
- Beperkt
- Lijst
- lang
- Kijk
- op zoek
- kwijt te raken
- maken
- Maart
- Marge
- marker
- max-width
- maximaal
- betekenis
- middel
- Media
- Geheugen
- vermeld
- Metadata
- Microsoft
- Midden
- macht
- minimaal
- minimum
- Mobile
- modi
- gewijzigd
- meer
- meest
- naam
- nodig
- netwerk
- New
- een
- aantal
- verduisterd
- Voor de hand liggend
- of
- officieel
- Oud
- on
- EEN
- online.
- open
- geopend
- opening
- bestellen
- origineel
- Overige
- anders-
- het te bezitten.
- Oxford
- schilderen
- deel
- onderdelen
- verleden
- Paul
- Mensen
- blijvend
- telefoons
- pixel
- Plato
- Plato gegevensintelligentie
- PlatoData
- plus
- portretteert
- positie
- Post
- Berichten
- mogelijk
- Kostbaar
- de voorkeur geven
- vorig
- principe
- waarschijnlijk
- probleem
- produceren
- Programma
- Programmeur
- Programma's
- leverancier
- zetten
- tarief
- liever
- bereikt
- Lees
- onlangs
- verminderen
- regelmatig
- blijven
- verwijderen
- het verwijderen van
- herhaald
- vervangen
- vervangen
- Rapportage
- beperkingen
- terugkeer
- beoordelen
- herschrijven
- RGB
- Risico
- lopen
- lopend
- s
- Zei
- dezelfde
- Bespaar
- besparing
- Scale
- scherm
- screenshots
- sectie
- veiligheid
- Beveiligingsupdate
- lijkt
- gevoelig
- Volgorde
- serie-
- reeks
- het instellen van
- Delen
- Bermuda's
- moet
- Maat
- Klein
- kleinere
- So
- dusver
- Social
- social media
- Software
- solide
- sommige
- Iemand
- bron
- broncode
- Tussenruimte
- spreken
- begin
- blijven
- Still
- stop
- opgeslagen
- stream
- studio
- dergelijk
- vermeend
- SVG
- system
- T1
- TAG
- praat
- proef
- dat
- De
- de wereld
- hun
- Ze
- daarom
- ding
- drie
- niet de tijd of
- naar
- vandaag
- tools
- tools
- top
- Totaal
- overgang
- transparant
- leiden
- Draai
- typisch
- Tenslotte
- voor
- verstaanbaar
- unieke
- uitpakken
- ongewenste
- bijwerken
- URL
- .
- Gebruiker
- doorgaans
- groot
- versie
- volume
- Kwetsbaar
- Het wachten
- Manier..
- Wat
- of
- welke
- wil
- gewillig
- ruiten
- Windows 11
- Met
- zonder
- afvragen
- Woord
- woorden
- wereld
- zou
- schrijven
- het schrijven van
- geschreven
- Your
- zephyrnet