Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 1

Ĉe la fino de la video, vi aŭdis klakon - ĉi tio estas la malŝloso de la mekanika stirŝlosilo, kiun ni ne povas preteriri per elektroniko. Vi devas uzi ion mekanikan, rompi la serurcilindron mane, aŭ fari ion similan, kion mi ne intencis fari al ŝia aŭto. Ĉiuj firmware montritaj en ĉi tiuj videoj estos disponeblaj en GitHub post mia parolado, do simple iru al la URL sur la glito kaj elŝutu la OpenRemoteStart-dosieron.

Ni parolu pri tio, kio ĝuste okazas kiam ni aldonas Interreton al ĉi tiu sistemo, ĉar ĝi devas esti bona por ni, ĉu ne? Kiel mi diris, mi aĉetis teleregilan modulon nomitan MyCar. Ĝi venas en diversaj modifoj, mi havis la Linkr LT-1-modelon.

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

MyCar estas nur marko kaj tiaj moduloj estas venditaj sub la nomoj Linkr LT-1, MyCar KIA, Visions MyCar, Carlink (CL6), ktp. Kiel rezultas, de iom da tempo, KIA-koncesioj en Kanado instalis ĉi tiun sistemon, aŭ almenaŭ apon nomitan MyCar KIA, sur siaj aŭtoj. Kurioze, ĉi tiu aplikaĵo ne plu estas elŝutebla en la AppStore. Mi ankaŭ volas noti, ke mi elektis Fortin kaj MyCar-produktojn, sed laŭ uzantrecenzoj sur temaj forumoj de sendependaj aŭto-alarmoj, aliaj sistemoj ne kondutas pli bone kaj havas similajn problemojn.

Mi havas gravan demandon: Kial la postmerkata aŭta alarmmerkato vendas produkton kun sekurecaj problemoj kaj neniu zorgas? Tial, se iu el vi interesiĝas pri foraj startigaj sistemoj, atentu kelkajn gravajn cirkonstancojn. Unue, kiel mi menciis antaŭe, se la DS-sistemo ne estas ĝuste instalita sur aŭto kun mana transdono, estas tute eble, ke post ekfunkciigo de la motoro malproksime, la aŭto simple veturas sen ŝoforo se iu ilaro estas engaĝita en la transdono. . Ĝi estas vere danĝera. La dua danĝero estas, ke se iu parkas aŭton en kuna garaĝo kaj hazarde ŝaltas la motoron malproksime, ili povus sufoki pro la akumulita karbona monoksido. Do se vi havas CO-sistemon kaj kunan garaĝon, vi certe havu detektilojn pri karbonmonooksido.

Se vi uzas DS-sistemojn, neniam provu ekfunkciigi la motoron de via aŭto sen scii precize kie ĝi estas, ĉar la konsekvencoj povas esti katastrofaj.

La MyCar-aparato, malgranda nigra skatolo kun du dratoj elirantaj el ĝi, havas 8 havenojn, du el kiuj estas dediĉitaj al la sencimigilo-interfaco. Konekti al ĉi tiu interfaco montris, ke la aparato funkcias Linukso, pri kiu la fabrikanto silentas. Estas facile eniri la firmware-ŝelon uzante la pasvorton oelinux 123, sed vi povas uzi la AE-Motoron sen ensaluti, kiu ebligas al vi enigi AT-komandojn de la komandlinio, inkluzive de la komando por ŝanĝi la IP-adreson de la aparato per kiu ĉi tiu modulo komunikas.

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Se ni rigardas la subajn liniojn, ni povas vidi la IP-adreson de la servilo, de kiu la modulo MyCar ricevas firmware-ĝisdatigojn. La aparato estas ekipita per L-haveno, kiu ebligas al vi "aŭskulti" komandojn ricevitajn de la modulo. Uzante la AE-Motoron kaj ŝanĝante la IP de la parigita aparato, mi povis determini, ke ĉi tiu aparato komunikas kun la DS per la neĉifrita UDP-protokolo.

Mi ne tro rigardis ĝin, sed mi pensas, ke ĝi estas sufiĉe grava kaj interesa fakto. Se vi interesiĝas pri pli da informoj pri ĉi tiu aparato, rigardu ĉi tiun lumbildon - ĝi montras elektran tension de 3,3V, transdono de datumoj de 115200 baŭdoj, servila adreso por ĝisdatigi la firmware, radikan pasvorton kaj ligilon. al la uzantmanlibro.

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

La aparato povas "toleri" pli altajn livertensiojn.

Kiel mi diris, ĉi tie fariĝas sufiĉe malvarme. Proksimume monaton post kiam mi donacis ĉi tiun sistemon al mia amatino, mi decidis eltiri la unuon el la aŭto kaj doni al ĝi bonan kuron. Fakte, mi dum ĉi tiu tuta monato forpuŝis pensojn pri la vundebleco de ĉi tiu aparato. Ili antaŭdiris temperaturojn ĝis -30F° por la venonta semajno, do mi devis rapidi. Mi konektis al la ŝelo kaj ekfunkciigis ĝin, sed ĉar la ĉela ricevo en mia hejma laboratorio ne estas tre bona, mi decidis labori kun la skatolo en alia komputilo. La FTDI-unuo, kiun mi uzas, havas mallongan ŝnuron, do mi trovis pli longan, ŝtopis ĝin en la DS-unuon, ŝtopis ĝin en la komputilon, kaj tuj kiam mi ŝaltis la potencon, mia unuo ekfumis!

La leciono por esti lernita de ĉi tio estas: se vi hakas aparataron, pretigu rezervan unuon! Mia koramikino metis la moralon de la rakonto jene: Se via parulo estas retpirato, ne lasu lin ludi kun viaj kristnaskaj donacoj! Nun ni rigardu la programaron, mi pensas, ke nenio fumos ĉi tie.

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Mi komencis prokurilon de viro-en-la-meza, malŝaltis SSL-kontrolon sur mia telefono kaj rigardis kian trafikon la programo sendis al la backend. Registrante, mi rimarkis, ke la sistemo prenis mian retadreson kaj sendis ĝin al la retservo por certigi, ke la adreso estas asociita kun ekzistanta konto. Estas interese, ke la sistemo uzis Bazan Aŭtentigon ĉar mi ankoraŭ ne kreis konton. Mi ne sciis kion fari kun ĉi tiu informo, do mi simple notis ĝin en kajeron kaj pluiris. Mi kreis mian konton kaj ensalutis, kaj la unua afero, kiun la aplikaĵo faras dum ensaluto, estas voki retservon por kontroli la nunan uzanton. Do mi simple vokis ĉi tiun retservilon kun la akreditaĵoj kiujn mi antaŭe vidis, kiuj estis uzataj por kontroli ĉu mia retadreso ekzistis, kaj ricevis aliron al Mycar Admin kiel respondo.

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Mi dubis, ke tio estas vera konto de administranto de la sistemo ĉar, malgraŭ soni laŭte, ĝi havis malaltajn privilegiojn. Post ĉio, ni ĉiuj konas tiajn homojn.

Tial mi kreas alian peton - la komandon EngineStart, por ekfunkciigi la aŭton de ĉi tiu konto, alklaku "Sendu", ricevas la komandan statuson responde - "200 OK", kaj post ĉirkaŭ tri sekundoj mia aŭto ekmoviĝas.

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Kiel ĝi rezultas, la Mycar Admin-konto ja estis administranta konto malmola kodita en la moveblan apon. Sed tio ne estas ĉio. Sur unu el la antaŭaj diapozitivoj vi vidis tian aĵon kiel API-ŝlosilo. Denove, de monitorado de mia falsa prokurservila trafiko, mi eksciis, ke ĉi tiuj API-ŝlosiloj povas esti uzataj anstataŭ uzantnomo kaj pasvorto. Se vi uzas "API" kiel la uzantnomo kaj unu el ĉi tiuj ŝlosiloj, vi povas aŭtentikigi la uzanton.

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Do mi kopiis la enhavon de la linio "APIKey", algluis ĝin en la Pasvorton de la POST-apliko kaj klakis la butonon "Sendu".

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Tamen ĝi ne funkciis kaj mi ne povis eltrovi kial dum longaj 5 minutoj. Fine mi ekkomprenis, ke mi forgesis forigi la citilojn kaj komojn en la kopiita API-ŝlosilo, kio estas tio, kion oni diris al mi: "Vi faris eraron en la SQL-sintakso." Evidentiĝis al mi, ke vi simple povus uzi bazan SQL-injekton por preteriri la tutan ensalutprocezon kaj fariĝi administranto aŭ iu ajn uzanto, kiun vi volas. Mi pensas, ke neniu iam provis ŝteli aŭton per SQL-injekto, do ni provu ĝin.

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Ĝenerale, mi ensalutis al mia konto, klakis "Sendu" kaj ricevis statuson "200 OK" kiel respondo. Ĉi-foje mi pensis registri videon. Estas iom mallume ĉar mi filmis malfrue nokte de mia oficejo-fenestro. Do, mi enigas la komandon, kaj vi vidas tra la fenestro, ke la lumturoj de la aŭto fulmas en la korto malsupre. Komence ilia lumo estas malforta, sed poste la lumturoj komencas brili plene - jen la motoro ŝaltanta. Do, mi ekfunkciigis la aŭton per SQL-injekto (aŭdantaro aplaŭdo).

Sed tio ne estas ĉio. SQL-injekto povas esti uzata ne nur por rajtigo, sed ankaŭ por anstataŭigi aliajn parametrojn kiel URL, demandajn korpan parametrojn ktp. Fakte, ĉi tiu sistemo uzas SQL-injektojn ĉie. Rigardante la erarmesaĝojn, ni povas vidi, ke tio, kion ni enigas kiel pasvorton, estas komparata rekte kun la pasvorta kolumno en la datumbazo.

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Ĉi tio signifas, ke ili uzas simplajn tekstajn pasvortojn en SQL-injekto. Kiel oni diras, "ĉi tio tute ne estas bona, kaj eĉ tre malbona!" Sed sufiĉe pri SQL, ni vidu kion alian vi povas fari por malproksime startigi vian aŭton. Vi simple sendas la komandon "EngineStart" kaj en respondo vi ricevas entjeran identigilon reprezentantan la identigilon de ĉi tiu komando, ĉi-kaze ĝi estas ID = 3. Konante la identigilon, vi povas "tiri" servon kiu raportos la staton de ĉi tiu. komando.

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Do pliigante aŭ malpliigante la ID-valoron, mi "tiras" la statuson de iu ajn komando kiu iam estis sendita sur tiu sistemo.

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Tamen estas nenio aparte interesa pri tio, kaj mi scivolas, ĉu estas rekta referenco al objekto ĉi tie, kiun mi povas uzi por startigi mian aŭton. Do mi kuris la komandon "EngineStart" kiel legitima uzanto de mia konto, kaj poste provis voki ĝin per la konto de alia uzanto, kiu ne devus havi aliron al la sistemo. Responde, mi ricevis erarmesaĝon: "Ĉi tiu konto ne estas en la kunteksto de la hierarkio." Do eble ĉi tiu hako ne funkcios. Tamen, se vi rigardas ĉi tiun API, vi vidos, ke ĝi duobligas informojn - la retpoŝtadreso de la uzanto estas mapita al ilia konta ID.

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Se vi disvolvas API aŭ hakas API, la speco de duobligo de informoj, kiun ni vidas en ĉi tiu URL, povas esti fonto de eraroj. En ĉi tiu kazo, API-cimoj povas manifestiĝi en kvar malsamaj manieroj.

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Se vi rigardas kazojn 2 kaj 3, ruĝe skizitaj, vi povas vidi rektajn referencojn al la objekto. En ambaŭ kazoj, la sistemo ne kontrolas ĉu vi estas rajtigita por efektivigi la komandon. Mi provis la kazon 2 kaj ĝi ne funkciis, kio pri kazo 3? Ĉi tie ni nur devas anstataŭigi la ID de la konto USER_EMAIL en la URL ĉar ĝi rekte rilatas al la ID de la konto ACCOUNT_ID. Antaŭe ni uzis la konton ID de la viktimo, sed nun ni uzas la konton de la atakanto. Do mi uzis la ID de la konto de la retpirato kaj la ID de la aparato de la viktimo, sendis la komandon kaj atendite ricevis komandan statuson "200 OK" kaj akiris kontrolon de la apo MyCar.
Do, per tri malsamaj atakvektoroj, ni povis fari ĉion, kion povus fari legitima uzanto de la aplikaĵo. Ĉi tio signifas, ke vi povas trovi ajnan aŭton en la urbo, agordi ĝian markon kaj modelon en la aplikaĵo, kaj poste malŝlosi la aŭton kaj startigi ĝin. Ni povas malŝalti aŭ ŝalti la alarmon, fari ŝanĝojn al la serva menuo de la aŭto kaj kontroli la staton de ajna komando. Kaj ĉio ĉi povas esti farita en tri malsamaj manieroj.

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Estas evidente, ke la programistoj de MyCar provis iel ripari la sistemajn cimojn. Do, en la kazo de malmola koditaj pasvortoj, ili simple metas inversan prokurilon antaŭ la aplikaĵo por kaŝi la akreditaĵojn kiuj estas uzataj por rajtigo. La problemo estas, ke inversaj prokuriloj ne estas magiaj kaj ne povas ripari ĉiujn problemojn. Ili konservis la SQL-injekton en tria servo tiel ke eĉ sen pasvorto mi ankoraŭ povas uzi ĝin per la uzanta konfirma proceduro.

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Mi decidis pli detale rigardi la URL-strukturon. Vi eble rimarkis, ke ĉiuj adresoj uzataj de la sistemo enhavas m2m. Decidante, ke tio estas ia interna interago por la rajtiga mekanismo en la aplikaĵo MyCar, mi enigis ĉi tiujn leterojn en Guglon kaj malkovris la retejon de M2M Suite. La nura afero, kiun vi povas fari, kiam vi vidas ĉi tiun formularon, estas enmeti kelkajn unuopajn citilojn tien kaj vidi kio okazas. Kio okazos estas, ke vi ricevos la deziratan SQL-injekton (aŭdantaro-aplaŭdon).

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Kaj ĉi tio venas plurajn monatojn post kiam la programistoj raportis problemon kun SQL-injekto. Se aplikaĵo havas tiajn problemojn, ĝi devas esti riparita kiel eble plej baldaŭ, sed kiel vi povas vidi, la programistoj faris nenion. Mi trovas tian malrespekton por uzantoj ofenda.

La MyCar-modulo havas GPS-unuon, por ke ĝi povas spuri la lokon de via aŭto kaj montri ĝin en la aplikaĵo. Sed, kiel montriĝis, ili stokas ne nur la nunan lokon de la aŭtoj. Ili konservas multe da informoj, multe pli ol necesas por konservi trakon de la aktuala loko de aŭto. En mia kazo, dum 13 tagoj de uzado de la aplikaĵo, ili amasigis iom malpli ol du mil geolokigajn punktojn de la lokoj, kiujn mia aŭto vizitis. La privateca politiko de la ellaboranta kompanio MyCar ne diras eĉ unu vorton pri tia kolekto de informoj.

Tamen, ĝi fariĝas eĉ pli malbona. Vi povus argumenti, ke ĉi tio estas nur kromefiko de la efektivigo de loka servo. Sed la afero estas, anstataŭ nur krei liston de lokoj, al kiuj via aŭto iras, ili uzas alian API, kiu analizas tiujn datumojn kaj determinas la lokojn, al kiuj via aŭto iras plej ofte. Denove, laŭ mia scio, ne estas sugesto de tia funkcio en la privateca politiko. Eble ĉi tio ne estas tiom surpriza ĉar post multe da serĉado, mi trovis la ĉefkompanion de MyCar nomita Procon Analytics, iris al ilia retejo kaj vizitis la FAQ sekcio. Ĉi tie mi trovis la demandon: "Kiel vi certigas sekurecon de datumoj?" La respondo de la firmao estis: "Malsame al publikaj nuboj, kiuj konkuras pri prioritato en datumstokado, Procon Analytics uzas sian propran virtualan nubon, kiu estas uzata ekskluzive por uzantoj de nia aplikaĵo kaj estas protektita kontraŭ interfero de aliaj uzantoj. Ĉi tio estas speciala nuba medio kun alta grado de sekureco, kiu certigas facilan haveblecon kaj rapidecon de servo livero. Partneriĝante kun Procon Analytics, vi povas esti certa, ke viaj datumoj estas sekure protektitaj." Mi eĉ ne scias kion diri al ĉi tio...

Konferenco DEFCON 27. Via aŭto estas mia aŭto. Parto 2

Se vi iras al ilia Fejsbuka paĝo, vi povas ekscii eĉ pli interesajn aferojn. Ĉi tie ili simple skribas: "Protekti informojn pri via veturilo estas esenca!" Nu, mi povas nur konsenti kun tia aserto.

Do, revenu al la demando, per kiu mi komencis: "Kiel tio okazas kaj kiel ĝi povas esti evitita"? Kaj pli grave, kiel ni kiel komunumo povas malhelpi ĉi tion okazi?

Ĉi tio finas mian raporton, sed mi ankoraŭ povos respondi kelkajn demandojn (aplaŭdo de la publiko).

Ĉu vi demandas ĉu ili riparis ĉion? Je ĉi tiu punkto, mi pensas, ke ili riparis ĉiujn cimojn, kiujn mi raportis al ili, escepte de la difektoj pri privateca politiko, kiujn mi menciis ĉe la fino de la parolado. La lastan fojon mi kontrolis ĝin, ĉio estis senŝanĝa. Kiam mi demandas, ĉu mi povas redakti la parametrojn de la elektronika motorkontrolunuo (ECU) de la aŭto en simila maniero, mi respondos, ke mia tasko estis redakti la parametrojn de la aŭto nur en la aplikaĵo MyCar. Ĝi stokas ciferecan reprezentadon de la veturilo, kiu estas redaktita per rekta objektaliro, SQL-injekto aŭ alia atakvektoro.

La lasta demando estas: ĉu mi havas senŝlosilmotoran startsistemon en mia aŭto kun la butono "Start" kaj kia estas la situacio kun la stirŝlosilo en ĉi tiu kazo? Mia respondo estas, ke MyCar havas tian butonon, do ĉi tiu sistemo ne havas stirŝlosilon. Mi suspektas, ke se vi instalos ĉi tiun sistemon, vi certe ne povos fidi je la stirŝlosilo.

Kelkaj reklamoj 🙂

Dankon pro restado ĉe ni. Ĉu vi ŝatas niajn artikolojn? Ĉu vi volas vidi pli interesan enhavon? Subtenu nin farante mendon aŭ rekomendante al amikoj, nuba VPS por programistoj de $4.99, unika analogo de enirnivelaj serviloj, kiu estis inventita de ni por vi: La tuta vero pri VPS (KVM) E5-2697 v3 (6 Kernoj) 10GB DDR4 480GB SSD 1Gbps de $ 19 aŭ kiel dividi servilon? (havebla kun RAID1 kaj RAID10, ĝis 24 kernoj kaj ĝis 40GB DDR4).

Dell R730xd 2 fojojn pli malmultekosta en Equinix Tier IV datumcentro en Amsterdamo? Nur ĉi tie 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 televidilo ekde 199 USD en Nederlando! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ekde $99! Legu pri Kiel konstrui infrastrukturan korpon. klaso kun la uzo de serviloj Dell R730xd E5-2650 v4 valorantaj 9000 eŭrojn por centono?

fonto: www.habr.com

Aldoni komenton