kramselund jereminsen

# 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_TT...

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-b...
https://decrypt.co/40765/privacy-bug-found-apple-google-covid-tracing-fr...
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...

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

Relateret indhold

Kommentarer (12)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Jacob Larsen

Der er 2 forskellige muligheder for at skifte BD ADDR på et advertising set. Enten lader man controlleren om det, eller også gør man det fra hosten. Der er lidt elastik i spec her, så hvis man skal være 100% sikker på at de skift af BD ADDR og RPI er synkroniserede, så skal man først stoppe advertising, skrive ny adresse og nye advertising data med opdateret RPI (Det er 2 separate kommandoer) og så til sidst starte advertising igen. Hvis dette ikke sker, så er det Google/Apple den hænger ved, da det er dem der kontrollerer denne skrivning

  • 1
  • 0
#2 Bjarne Nielsen

Hvis dette ikke sker, så er det Google/Apple den hænger ved, da det er dem der kontrollerer denne skrivning

Med fare for at lyde som "de holder den forkert", så er jeg enig. Protokollen er god nok, fejlen vil ligge i implementeringen.

Hvis man prøver at holde noget hemmeligt med kryptografi, så er der mange små men vigtige ting, som man i praksis skal passe på; f.eks. timingsbaserede angreb ved, at man stopper en sammenligning straks man ser en forskel.

Og i de tidligere udgaver af specifikationen stod der faktisk "hver 10. minut", så Apple og Google er blevet klar over den.

  • 0
  • 0
#3 Jacob Larsen

Og i de tidligere udgaver af specifikationen stod der faktisk "hver 10. minut", så Apple og Google er blevet klar over den.

Det må have været en forglemmelse i starten. Opførsel omkring skift af random adresse har været med random intervaller længe. Men det spændende vil være om de lader controlleren styre timing for skift, eller de tager kontrollen selv.

Man kan i øvrigt checke det selv på Android. I developer menuen kan man aktivere "Bluetooth HCI snoop log" og lade smittestop app køre. Jeg mener Wireshark kan vise loggen, ellers kan man finde en viewer på fte.com ved at lede efter Free Capture File Viewer.

Husk dog at sådan en BT snoop log kan indeholde gemte link keys så den skal behandles forsigtigt.

  • 0
  • 0
#4 Bjarne Nielsen

Lad mig lige starte med at understrege, at selvfølgelig skal det være i orden. Men hvad er betydningen lige?

For det første, så skal du være der, når der sker. BTLE er ikke lavet til langdistancekommunikation, og selvom man kan meget med gode antenner, så er der grænser.

For det andet, så skal du være der hver gang. Ellers kæder du kun et 10-20 minutters interval sammen med et andet 10-20 minutter interval, og det er det.

Og ja, der er sammenkædningsproblematikker:

  • Hvis du betaler med dankort, og der kun er et kontakt-id i luften, så er det nok dit.
  • Hvis du er den eneste, som står nede ved mejeriprodukterne, så er det nok dit kontakt-id, som er i luften.
  • Holder det pludselig op, for aldrig mere at blive set igen, mens et nyt opstår ud af det blå, og kan følges hele vejen op til kassen, så er begge nok dine.
  • Hvis der er tre kontakt-ids i luften nede ved mejeriprodukterne, og det ene pludselig forsvinder og et andet opstår ud af det blå, mens de to andre stadig består et stykke tid, så er det også til at gætte, hvem som fik et nyt id.

Hvis du virkelige vil sammenkæde, så skal du få folk til at melde sig smittet. Så kan alle, som får smittemeldingen sammenkæde alle personens kontakt-ider en dag ad gangen.

Hvis du vil se, hvem i gruppe, som f.eks. kunne have været til en demonstration, så starter du med at melde en af dem "positiv". Og det gør de så også med resten, efterhånden, som de lader sig teste. Og hvordan får du den første til at blive testet, så du kan melde ham "positiv"? Tja, måske ved at være i nærheden af ham, og melde dig selv "positiv".

Men nu er jeg vist lige en kende for konspiratorisk, for det er nu stadig min fornemmelse at der er væsentlig større udfordringer, og ikke bare med den lille sladrehank, som mange har i lommen, men i det hele taget.

PS: Jeg ved godt at snakken om tilfældighed blev dømt ude, og det er den eneste grund til at jeg ikke nævner den ... oh, damn! :-)

  • 0
  • 0
#7 Jacob Larsen

Den reelle betydning er nok begrænset. Du vil kunne følge en kundes vej igennem en butik, men det kan du allerede i op til 20 minutter ad gangen. Og du vil ikke kunne se at det er den samme kunde hvis vedkommende kom tilbage senere.

De tricks du snakker om med at få folk meldt smittet kan du kun gøre ved at de reelt bliver smittet, da der skal være en positiv prøve i journalen før det kan lade sig gøre. Derfor den del kræver NemID login. Hvis man virkelig vil så kan det selvfølgelig også arrangeres.

  • 1
  • 0
#8 Jacob Herbst

Disclaimer: Jeg sidder med i advisory boardet omkring privacy og sikkerhed i den danske SmitteStop App, og er derfor belastet med indsigt i den faktisk løsning, processen omkring den og hvad formålet med app’en er.

Som Henrik anfører vil al ny teknologi blive forsøgt angrebet. Naturligvis vil der blive fundet fejl og uhensigtsmæssigheder i SmitteStop App’en og/eller GAEN frameworket – dette på trods af der er brugt mange ressourcer på at efterprøve sikkerheden. Jeg er sikker på at Henrik kan skrive under på hvor svært det er som pentester, at finde alle faktiske og potentielle sårbarheder. Ellers ville det være den første fejlfri softwareløsning i historien. Naturligvis skal vi gøre alt hvad vi kan for at undgå sårbarheder og lave sikre løsninger men vi må også acceptere verden ikke er perfekt. I forhold til SmitteStop og GAEN bygger løsningen på et design med højt fokus på privacy og sikkerhed og der er mig bekendt ikke sået tvivl omkring det grundlæggende design.

Men lad os i stedet huske hvad SmitteStop rent faktisk forsøger at opnå. SmitteStop appen skal hjælpe os med at stoppe udbredelsen af COVID19 i samfundet så folk ikke bliver syge og dør. Løsningen er ikke perfekt og kan ikke stå alene, men er en hjælp til smitteopsporingen. Hvis eksempelvis alle gæster i nattelivet og på restauranter havde SmitteStop aktiv ville det fx gøre gæsteregistrering overflødig og smitteopsporingen meget mere præcis og effektiv. Heldigvis har smittespredningen i Danmark indtil nu været ganske lav så det er svært at sige om app’en har den effekt som vi håber, men set i lyset af COVID19 i sidste ende slår folk ihjel og lukker samfundet ned synes jeg det er det værd at prøve. (Desuden er det netop pga. privacy beskyttelsen i app’en svært at måle om den virker eller ej, da man er nødt til at basere det på folks egne tilbagemeldinger i forbindelse med Coronatest…)

Det er nemt at pege på mulige problemer med SmitteStop, men jeg mangler egentlige at der bliver peget på andre realistiske alternativer – udover bare at lade være. Som jeg ser det er privacy og sikkerhed i den løsning der er lavet god og fornuftig – og dermed er risikoen så lille at jeg mener den værd at løbe hvis det kan hjælpe med at bremse COVID19. Jeg vil i øvrigt også gerne rose de danske politikere da det i sidste ende var dem – bl.a. efter anbefaling fra advisory boarded – der valgt at skrotte den første app, forsinke udrulningen og bakke op om den GAEN baserede løsning med decentral logning af data. Så det er lidt for let at hævde politikkerne slet ikke forholder sig til teknologi.

… og så lad os lige sætte det beskrevne problem i perspektiv: By design er det således at vi kan lytte efter de BT adresse og RPI som udsendes fra GAEN frameworket. En glimrende app til dette formål er Beacon Scope der kan hentes på Play Store til Android, og jeg vil i øvrigt tro den meget fint kan bruges til at eftervise den omtalte sårbarhed. Samme app viser også afstanden til enheden (eller rettere den afstand som måles via BLE signalstyrken). Med app’en aktiv i det lokale supermarked og de øvrige ”gæster” der overholder afstandskravene kan man uden problemer sammenkæde både aktuel BT adresser, RPI samt hvordan vedkommende ser ud (altså rigtige analoge ansigter). Man kan også uden problemer se når der ændres BT adresse og RPI. Altså markant mere information end den omtalte sårbarhed potentielt kan afsløre. Dette er alt sammen ”by design” og ikke på grund af sårbarheder. Men det er stadig markant mindre information end man afslører når man fx åbner Google Maps, Facebook eller den lokale vejrudsigt. Naturligvis skal denne sårbarhed rettes, men det er altså ikke en grund til at undlade at bruge SmitteStop.

Hovedparten af de øvrige punkter opremset under ”Mulige angreb” er i øvrigt ikke særligt SmitteStop specifikke, men generelle problemstillinger i forhold til mobile enheder og sporing.

Det er derudover godt at se andre i kommentarersporet der forholder sig pragmatisk til denne sårbarhed – tak for det.

Og har du ikke allerede gjort det så se at få hentet SmitteStop appen – det er nu med de stigende smittetal at den er rigtig vigtig!

  • 3
  • 0
#10 Bjarne Nielsen

Hvis eksempelvis alle gæster i nattelivet og på restauranter havde SmitteStop aktiv ville det fx gøre gæsteregistrering overflødig og smitteopsporingen meget mere præcis og effektiv.

Egentlig synes jeg, at når vi nu har appen, så fred være med det. Den er forholdvis harmløs, og skulle den gå hen og gøre nytte, så er det kun godt.

Men hvis vi holder op med at gøre andre ting, som rent faktisk virker, fordi vi tror at appen kan gøre det lige så godt, så synes jeg at vi skal være rimeligt sikre på, at den nu også er den tillid værdig.

Og når man bruger appen som undskyldning for at gøre farlige ting, som f.eks. at holde festen kørende i Jomfru Ane gade fordi "at vi har en app, og så kan vi bare rydde op bagefter", som det tyder på at man mener (se her: https://www.dr.dk/nyheder/regionale/nordjylland/fremover-skal-du-downloa...), så lyder det farligt. Præventive tiltag ville efter min mening være meget mere passende.

  • 3
  • 0
#11 Jacob Herbst

Jeg er fuldstændig enig - SmitteStop er et supplement til mange andre forholdsregler og må ikke få os til at slække på andre forholdsregler som at holde afstand. Men det er desværre det vi også ser fx ved brugen af mundbind hvorefter nogen mener så er det ok at være tættere sammen.

Men derfor er SmitteStop app’en stadig et fint værktøj til smitteopsporing på fx restauranter, og kan være en erstatning for anden registrering af gæster, som nogle jo også anser som et privacy problem….

  • 0
  • 0
#12 Bjarne Nielsen

... kan være en erstatning for anden registrering af gæster, som nogle jo også anser som et privacy problem….

Ja, nu er jeg hverken juridisk skolet eller tankelæser, så jeg kan hverken sige hvad der er ret, eller hvad andre synes er rimeligt, men her er mine tanker:

Registrering af gæster kan være problematisk ud fra et praktisk smittesporingssynspunkt. Nu har vi to gange set at stripklubber i Toronto, Canada (to forskellige klubber, to tidsmæssigt adskilte hændelser) har været smitte-hotspots, og selvom der var en gæste-log, så skulle de fleste efter sigende have opgivet falske kontaktoplysninger. Nu er stigmaet omkring besøg på Jensens nok trods alt mindre, men det skal man da have med. Der skal nok være nogen, som ikke vil indrømme, at de har været på Jensens, og måske især ikke, hvem de var der med.

Det væsentligste problem, som jeg ville have med en gæstelog ville ikke være, at den blev brugt til smittesporing (tværtimod, det er hele pointen!), men at al erfaring viser, at folk er fulde af gode ideer og dårlige undskyldninger, når de nu har fået fingre i kontaktdata. Og tilsvarende er forrygende dårlige til at passe på dem, og mindst lige så dårlige til at få dem bortskaffet på forsvarlig vis. Her vinder appen.

Vi bliver også nødt til at have en diskussion om "hende den søde blondine i lårkort" ... selv uddannede betjente med karriere på spil er set slå romantiske interesser op, og i nattelivet skal der ikke være megen plads til "shoulder-surfing" fra andre gæsters side, før det vil kunne være problematisk. Her vinder appen så igen.

Til gengæld er jeg meget usikker på appens pålidelighed, og især i det setup - hvis den ligger i baglommen eller man får en veninde til at passe på den, så virker den nok ikke - i hvertfald ikke i en grad, som vi kan regne med.

Og jeg er meget bekymret for en udvikling, hvor apps eller bare smartphone duopolet går hen og bliver et defacto adgangskrav. Det må aldrig blive en forudsætning for at kunne deltage i samfundet og livet.

Men det er desværre det vi også ser fx ved brugen af mundbind hvorefter nogen mener så er det ok at være tættere sammen.

Og det ... hverken gæste-log eller app eller mundbind skal blive en undskyldning for at tage unødvendige chancer. Og det lader til, at alle mener at netop deres situation er exceptionel. Men i det mindste, så virker mundbind på forkant ... apps og gæstelister virker kun på bagkant.

  • 3
  • 0
Log ind eller Opret konto for at kommentere