# Little Thumb attack - smittestop apps
Det officielle lydspor til dette indlæg er Daft Punk Random Access Memories, start evt med Motherboard
https://www.youtube.com/watch?v=wz7YiQdNmZ8&list=PLxws1M2-zjAPNbXeJrH_TTstwSQdm9KZ4&index=10
Lad mig starte med at sige,
Jeg ved IKKE om nedenstående gælder for den danske Smittestop app, men det er meget sandsynligt da denne bruger Apple Google GAEN framework.
Jeg har skældt ud på #Covid19 apps #smittestop råbt+skreget, ikke fordi jeg er synsk eller clairvoyant, men erfaring og kendskab til udvikling af crypto gør mig sådan kritisk og skeptisk. Jeg behøver heller ikke "få ret", men jeg håber dette indlæg kan få vores poltikere til at være en anelse mere på vagt overfor misbrug af teknologi.
Det overrasker mig som sådan ikke da jeg så et opslag på LinkedIn fra Niel Nielsen ( @nieldk på Twitter ) omkring en sårbarhed:
Little Thumb attack:
Identifiers of the Google/Apple Exposure Notifications not updating at exactly the same time means you can attribute “anonymous" #COVID19 beacons to a single device.
Credit: Serge Vaudenay (EPFL) and Martin Vuagnoux (base23)
Links:
https://hackaday.com/2020/09/03/covid-tracing-framework-privacy-busted-by-bluetooth/
https://decrypt.co/40765/privacy-bug-found-apple-google-covid-tracing-framework
https://vimeo.com/453948863
Tilfældige tal
Computere er meget robuste, virker fantastisk godt, ofte kan vi boote vores computere og de er ret forudsigelige. Faktisk kan det være et problem når vi eksempelvis skal bruge kryptering at de er SÅ forudsigelige.
Til formålet at lave tilfældige tal har vi PRNG, https://en.wikipedia.org/wiki/Pseudorandom_number_generator
Lad os for resten af dette indlæg antage at tilfældige tal er tilfældige. Emnet er spændende, men ikke målet i dag.
Bluetooth og netværksteknologier
Mange af vores netværksteknologier har adresser, ID felter, som udpeger en enhed. Typisk var det en computer, men idag har en computer jo flere interfaces. Disse skal identificeres, fordi vi sender beskeder fra enhed A til enhed B. Så ID felterne er idag knyttet til et netværksinterface, som kunne være Ethernet, Wi-Fi kort eller Bluetooth.
Indenfor BT laver vi typisk pairing, og terminologien bruger BT ID som ensbetydende med enheden, lad det nu ligge - det giver god mening for den almindelige forbruger.
Felterne indenfor Ethernet kaldes for media access control address (MAC address), ikke at forveksle med Mac computer, og kaldes også for Ethernet hardware address. Den er typisk skrevet ned i netkort chippen på fabrikken og antages at være globalt unik. Læs mere på:
https://en.wikipedia.org/wiki/MAC_address
Fun fact, man kan udskifte sin MAC på både Ethernet og Wi-Fi, og det bruges til at anonymisere enheder, blandt andet fordi man ellers kan spore enheder. Dette kaldes for MAC spoofing https://en.wikipedia.org/wiki/MAC_spoofing Jeg bruger selv et MAC changer program på min laptop til at skifte MAC "jævnligt".
Moderne telefoner skifter også deres MAC mens de scanner, men vil så typisk skifte til den fra fabrikken tildelte når de joiner netværket. Det har nogle fordele at de er stabile på netværket mht. DHCP osv.
Google Apple notification netværket
Jeg vil ikke gennemgå Google Apple Exposure Notfication (GAEN) i detaljer, det kan du finde forklaret andre steder.
Jeg vil starte ved det faktum, at:
Når en telefon afvikler frameworket udsendes beskeder på Bluetooth. Disse bruger et tilfældigt tal, Rolling Proximity Identifiers (RPI) som kan lagres på andre telefoner, hvis den modtager de samme over længere tid gemmes disse - da det så formodes at personerne opholder sig sammen.
Formatet er veldefineret, se
https://covid19-static.cdn-apple.com/applications/covid19/current/static/contact-tracing/pdf/ExposureNotification-BluetoothSpecificationv1.2.pdf
Rolling Proximity Identifier A privacy preserving identifier derived from the Temporary Exposure Key and sent in the broadcast of the Bluetooth payload. The identifier changes about every 15 minutes to prevent wireless tracking of the device.
aka tilfældig - og skifter /every 15 minutes/.
RPI værdierne er dem som gemmes sammen med lidt metadata og senere kan matches op imod smittede via de udsendte lister.
Gaen beskederne
Når Bluetooth beskederne udsendes sker det med en anden identifier. Normalt ville det være en Bluetooth Device Address, svarende til de unikke ovenfor. Det ville ødelægge funktionen hvis beskederne med tilfældige RPI alle blev udsendt med samme BD_ADDR, så den skifter da også!
Det er faktisk beskrevet:
During the Bluetooth broadcast, advertisements are to be non-connectable undirected of type ADV_NONCONN_IND (Section 2.3.1.3 of 5.2 Core Spec).
The advertiser address type shall be Random Non-resolvable.
On platforms supporting the Bluetooth Random Private Address with a randomized rotation timeout interval, the advertiser address rotation period shall be a random value that is greater than 10 minutes and less than 20 minutes.
The advertiser address, Rolling Proximity Identifier, and Associated Encrypted Metadata shall be changed synchronously so that they cannot be linked.
Bemærk også bekymringen i sidste linie omkring RPI OG Metadata i beskeder som skal ændres synkront.
Så vi har tilfældige adresser på Bluetooth niveau, vi har tilfældige RPI. Begge systemer kan vi gennemgå designet og alt er godt.
Altså, ja, indtil nogen rent faktisk hiver en antenne op af skuffen og lytter.
Angrebet
Angrebet går som sådan bare ud på at lytte. Det som videoen linket ovenfor, og angrebet viser er.
BT beskeder med BT adresse ABFG og RPI 127128, begge er tilfældige
ABFG || 127128
ABFG || 127128
ABFG || 127128
ABFG || 127128
På et tidspunkt, max 15 minutter skifter begge to BT og RPI , de roterer for privacy
HKJL || 122334
HKJL || 122334
HKJL || 122334
- dette får en angriber ikke meget ud af.
Hvis de ikke er synkroniserede, de skifter ikke præcis samtidig vil det se sådan ud:
Bluetooth message 1: OLD_BD_ADDR || OLD_RPI
Bluetooth message 2: NEW_BD_ADDR || OLD_RPI
Bluetooth message 3: NEW_BD_ADDR || NEW_RPI
og her sker balladen. Nu VED vi at OLD_RPI og NEW_RPI er samme enhed.
Eksemplet er direkte kopieret fra videoen! Hvor de kalder beskeden 2 for "Pebble".
Der er således kommet en lille sten i skoen. De tilfældige tal kan korreleres. Vi kan spore en telefon/person igennem længere tid - hvis vi ser pebbles.
Jeg vil også mene at hvis du er den ENESTE i en butik som bruger Smittestop app, eneste enhed som udsender beskeder af denne type - så har vi samme problem.
Bemærk også at de i videoen forklarer at de kan aflæse disse på 50m - hvilket ikke lyder urealistisk med en god antenne.
Konklusion
Hvis der er en konklusion, midlertidig konklusion om ikke andet, så er det:
* Vi kan læse nok så mange specifikationer, som fordrer tilfældige tal
* Komponenter der sættes sammen kan skabe nye problemer
Vi ved at ny teknologi vil blive undersøgt, OG forsøgt misbrugt.
Jeg vil derfor ydmygst bede om, at danske politikere antager en mere kritisk vinkel på ny teknologi, overvågning, IT.
Et lille spørgsmål som, "Hvordan kan det eventuelt misbruges?", eller "Er der et kapitel i dokumentationen der opremser mulighederne for misbrug?" vil begge kunne sætte gang i de diskussioner som er tvingende nødvendige i et moderne samfund.
Vi fik ikke den diskussion med hensyn til "smarte" elmålere, diverse "trafiktællesystemer", ej heller når snakken går på systemer til road pricing - til trods for at det kan laves med privacy.
Lad os nu tænke om IT altid ER den bedste løsning, se https://analogist.dk/
Mulige angreb
Alle systemer til forretningsdrivende, som sporer i lufthavne, forretning - måler vores færden. De jubler sikkert, så kan vi endnu bedre spore folk. Det var en ting vi regnede med de ville misbruge smittestop systemet til.
Afmaskere en telefon bliver også nemmere.
Hvis min telefon hedder "Kramses fon" så er det nemt, men hvis nu en politiker med lidt OPSEC snilde har kaldt sin for "Telefonen" eller ikke ændret "Samsung 123" så er det måske svært at vide hvilken en der skal /angribes/.
Med dette angreb, og eventuelt koblet med afstandsmåling - ja misbrug af afstandsmåling som jo er feature i smittestop apps. Så vil det nok være muligt at udpege hvilken telefon der tilhører en bestemt person.
Det er formentlig samtidig ret nemt via andre beskeder at samle nok til automatisk at koble identitet sammen med telefonen.
Værst er nok at hvis ovenstående misbruges /nok/ vil det være muligt senere når der kommer nofikationer ud at sige hvem der var smittet!
Så det er ikke urealistisk at nogen vil koble disse data i en nær fremtid. Det vil være indenfor muligheden at opsætte et lille system ved folketinget og opsamle disse data.
Smittestop apps er ikke så anonyme som det postuleres!
Tekniske detaljer
Det ville være ret hurtigt at efterprøve dette, hvis nogen har tid.
Jeg ville selv bruge noget Scapy til at printe data tror jeg.
https://scapy.readthedocs.io/en/latest/layers/bluetooth.html

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.
Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.
Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.
Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.