Etikettarkiv: skydd

Extrahera kod från låst minne i processorer

Andrew Shane Bunnie Huang, troligen mest känd för att han en gång i tiden var den som knäckte skyddet i Xbox har en klart läsvärd blogEn i mitt tycke ytterst intressant postning på bloggen handlar om hur Bunnie undersöker säkerheten hos Microchips PIC-processorer. Mer exakt processorer från PIC18-serien.

Microchip PIC18F
Microchip PIC18F

Precis som i många andra typer av microcontrollers har PIC mekanismer för att skydda det program som skrivs ner till det inbyggda programminnet från att kunna läsas ut igen. Detta sker oftast genom skrivbara låsbitar eller programmerbara säkringar. Det Bunnie ville ta reda på var hur svårt det är att återställa låsbitarna till det läge som tillåter utläsning av innehållet i det interna programminnet. Genom att skrapa bort toppen av kapseln går det att komma åt själva kiselbrickan, vilket är vad Bunnie gjort:

Kapseln bortplockad.

Det Bunnie vet är att PIC använder FLASH-minne för lagring av program och konfiguration. Bunnie ger en bra förklaring till släktskapet mellan minnesteknologierna EPROM och FLASH. Det han förklarar är att, precis som för EPROM, kan FLASH-cellers tillstånd påverkas av att belysas energirikt ljus (ex UV-ljus).

Gammalt fint EPROM-chip
Gammalt fint EPROM-chip

 

 

 

 

 

 

(Hittade bilden ovan på Wikipedia och kunde inte motstå att ta med det av ren skönhet.)

Att tillståndet i minnescellerna för EPROM påverkas av att belysas med ex UV-ljus utnyttjas genom att sätta in ett fönster i kapseln vilket gör det möjligt att radera kretsen bara genom att lysa på den. För att skydda mot motsvarande manipulation har Microchip lagt på ett extra metall-lager för att förhindra att någon genom att lysa på kretsen skall återställa låsbitarna. Så synd att metallen fungerar utmärkt som spegel.

Studsa ljus in under metalllagret.
Genom att lysa snett ovanifrån kan Bunnie få UV-ljuset att studsa på undersidan av metall-lagret och den vägen belysa låsbitarnas minnesceller även om dom är täckta av metall-lagret. Att belysa med UV-ljus raderar tyvärr även innehållet i det minne Bunnie vill extrahera. Som tur är finns tejp. Ett lager tejp över minnet går det utmärkt att resetta bitarna och få ut innehållet i minnet.

Bunnies chip med tejp över FLASH-minnet.
Bunnies chip med tejp över FLASH-minnet.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Genom att testa att skriva ner till minnet, sätta låsbitarna och sedan lysa lyckas Bunnie hitta rätt belysningsvinkel och vilka delar av kretsytan som behöver maskas för att framgångsrikt återställa låsbitarna utan att förstöra innehållet i minnet.

Så hur ska man tolka Bunnies hack? Jag tycker att det finns ett par saker man kan notera. En första sak man kan se är att det inte är speciellt svårt att komma åt och identifiera funktioner på ett chip – samt att ett chip är mer tåliga än man kan tro. Att skrapa bort kapseln och köra nedcabbat funkar fint, i alla fall på kort sikt.

Vad gäller själva låsfunktionen känns det som PIC har gjort det enkelt för sig. Hade låsbitarna varit utformade som komplementära par av celler, dvs där ena cellen måste vara satt och den andra nollställd för att läsning hade varit tillåten hade Bunnies attack behövt bli mycket mer exakt då han behövt belysa enskilda celler. Andra tillverkare har mer komplicerade lösningar, även inklusive riktiga säkringar som bränns av. Dessa går dock också att reparera.

Så hur ensam är Bunnie i att kunna göra det här? Antagligen inte speciellt ensam. Det han gör är i grunden inte speciellt svårt. Har man bara ett försök på sig och aldrig gjort det förut är det stor risk att man misslyckas. Men får man öva borde det gå att metodiskt få till en process som fungerar med låg felprocent. De chip vi pratar om här är billiga så att köpa en hög kretsar att öva på är ingen stor kostnad.

Det finns ett antal företag som erbjuder sig att extrahera kod från microcontrollers – alltid i utbildningssyfte eller som tjänst till företag som tappat bort sin källkod. Googlar man på MCU code recovery (MCU – Microcontroller Unit, dvs en liten kontrollprocessor för inbyggnad) hittar man bla Mika Technology, Gexin, Starlight samt företaget med det något avslöjande namnet MCU Crack.

Uppsprättat chip från MikaTech

MikaTech (som även finns på break-ic.com) , vars företagsslogan är Everything they make, we can break!, förklarar syftet med sina tjänster så här:

Our service is only to help engineers to study the up-to-date technologies on educational purposes and help you develope better security solutions

I samtliga fall erbjuder företagen ungefär samma upplägg. Oftast är det betalning vid start som gäller och du får lita på att dom levererar. En annan sak företagen har gemensamt är de långa listor med olika typer av MCUer, CPLDer, DSPer och FPGAer de säger sig kunna extrahera innehållet ifrån. Dom anger sällan priser direkt, men Googling ger att ca 1000 USD är kostnaden för att extrahera koden från en PIC-processor. Jag är osäker på hur trovärdiga dessa företag är, en antalet företag och det likartade upplägget pekar på att det antingen är ett utbrett bedrägeri, eller att det tyvärr är en fungerande, mogen marknad.

Så vad är då slutsatsen? Att enbart lita på att om du sätter låsbitarna i din MCU så är ditt program och hemligheter lagrade i processorns minne skyddade för alla former av attacker är anser uppenbarligen inte ett korrekt antagande. Jag har träffat representanter från leverantörer av MCU:er som hävdar att det är omöjligt att klona innehållet i deras processorers minnen. Förhoppningsvis visar detta att det inte är helt sant.

Det känns besvärligt att inte kunna komma med någon bra rekommendation på mekanism som skyddar mot den här typen av fysiska attacker. Tyvärr känner jag inte till något bra sätt att skydda sig. Det går att tänka sig aktiva skalskydd, men någon generell metod som ger bra skydd till ett pris som fungerar för att skydda microcontrollers mot fysisk kloning vet jag inte om det finns. Det pågår forskning om att ta fram icke kloningsbara funktioner (physically unclonable functions – PUF). Därmed riskerar detta att bli en skrämselartikel, vilket jag inte gillar.

Jag hoppas få anledning att skriva mer om detta och kunna presentera bra sätt att skapa bra skydd mot denna typ av fysiska attacker.