Belkin Wemo Smart Plug V2 – puhvri ületäitumine, mida ei parandata

Belkin Wemo Smart Plug V2 – puhvri ületäitumine, mida ei parandata

Allikasõlm: 2657924

IoT turvafirma Sternumi teadlased kaevatud populaarne koduautomaatika pistikupesa tuntud seadmebrändilt Belkin.

Mudel, mida nad vaatasid, Wemo Mini Smart Plug (F7C063) Ilmselt hakkab selle säilivusaeg lõppema, kuid leidsime palju neid veebist müügiks ning Belkini saidilt üksikasjalikud nõuanded ja juhised nende seadistamise kohta.

Kuigi nad võiksid olla vanad (lühiajalises kaasaegses mõttes), märkisid teadlased, et:

Meie esialgne huvi seadme vastu tulenes sellest, et mitu sellist lebasid meie laboris ja kasutasime meie kodudes, nii et tahtsime lihtsalt näha, kui ohutu (või mitte) neid kasutada on. [… T]see näib olevat üsna populaarne tarbeseade[; b] nende arvude põhjal võib kindlalt arvata, et ainuüksi Amazoni kogumüük peaks ulatuma sadadesse tuhandetesse.

Lihtsamalt öeldes on palju inimesi, kes on need asjad juba ostnud ja vooluvõrku ühendanud ning kasutavad neid praegu oma kodude pistikupesade juhtimiseks.

Lihtsamalt öeldes on "nutipistik" pistikupesa, mille ühendate olemasolevasse seinakontakti ja mis ühendab seinakontakti esiküljel oleva pistikupesa ja identse välimusega pistikupesa vahel Wi-Fi-ga juhitava lüliti. nutipistiku esiküljel. Mõelge sellele nagu toiteadapterile, mis selle asemel, et muuta näiteks ümmargune europistikupesa Ühendkuningriigi kolmnurkseks, teisendab näiteks käsitsi lülitatava USA pistikupesa elektrooniliselt lülitatavaks USA pistikupesaks, mida saab rakenduse kaudu kaugjuhtida või veebitüüpi liides.

S asjade internetis…

Nagu vana nali ütleb, on paljude nn asjade Interneti (IoT) seadmete probleem selles, et asjade Internetis tähistab turvalisust S-täht.

…see tähendab muidugi, et sageli pole küberturvalisust nii palju, kui võiks eeldada, või üldse mitte.

Nagu võite ette kujutada, võib ebakindel koduautomaatikaseade, eriti see, mis võimaldab kellelgi väljaspool teie maja või isegi maailma teises otsas elektriseadmeid soovi korral sisse ja välja lülitada, põhjustada palju probleeme.

Oleme varem kirjutanud asjade Interneti ebaturvalisusest paljudes erinevates toodetes, alates Interneti-veekeetjad (jah, tõesti), mis võib teie koduse Wi-Fi parooli lekkida turvakaameratesse, mida kelmid saavad kasutada silma peal selle asemel, et vastupidi, võrguga ühendatud kettaseadmetele, mille oht on saada lunavara poolt pritsitud otse Interneti kaudu.

Sel juhul leidsid teadlased Wemo Mini Smart Plugist 2023. aasta jaanuaris koodi kaugkäivitamise augu, teatasid sellest 2023. aasta veebruaris ja said selle jaoks CVE-numbri 2023. aasta märtsis (CVE-2023-27217).

Kuigi päris kindlasti on neid seadmeid pärismaailmas aktiivses kasutuses peaaegu kindlasti palju, on Belkin ilmselt öelnud, et peab seadet “oma eluea lõpus” ning turvaauku seetõttu ei lapita.

(Me ei ole kindlad, kui vastuvõetav oleks selline "eluea lõpust" loobumine, kui seadme 120 V vahelduvvoolu või 230 V vahelduvvoolu elektriskeemis ilmneb viga, näiteks ülekuumenemise ja mürgiste kemikaalide väljasaatmise või seadistamise võimalus. põlema, kuid näib, et seadme madalpinge digitaalelektroonikas või püsivara rikkeid võib ignoreerida, isegi kui need võivad viia selleni, et küberründaja vilgub seadme toitelülitit korduvalt soovi korral sisse ja välja.)

Kui sõbralikud nimed on teie vaenlane

Probleem, mille teadlased avastasid, oli vana hea virna puhvri ületäitumine seadme tarkvara osas, mis võimaldab muuta nn FriendlyName seadmest – tekstistring, mis kuvatakse, kui loote sellega ühenduse oma telefoni rakendusega.

Vaikimisi käivituvad need seadmed sõbraliku nimega Wemo mini XYZ, Kus XYZ tähistab kolme kuueteistkümnendsüsteemi numbrit, mis arvame olevat valitud pseudojuhuslikult.

See tähendab, et isegi kui teil on kaks või kolm sellist seadet, hakkavad need peaaegu kindlasti erinevate nimedega, et saaksite neid hõlpsasti seadistada.

Kuid tõenäoliselt soovite neid hiljem ümber nimetada, et neid oleks tulevikus lihtsam üksteisest eristada, määrates neile sõbralikud nimed, näiteks TV power, Laptop charger ja Raspberry Pi server.

Belkini programmeerijad (või täpsemalt nendesse Belkini kaubamärgiga seadmetesse sattunud koodi programmeerijad, kes võisid tarnida nutika pistiku tarkvara ka teistele kaubamärkidele) reserveerisid ilmselt 68 baiti ajutist salvestusruumi, et jälgida uus nimi ümbernimetamise käigus.

Kuid nad unustasid kontrollida, kas teie esitatud nimi mahuks sellesse 68-baidisesse pessa.

Selle asemel eeldasid nad, et kasutate seadme ümbernimetamise protsessi läbiviimiseks nende ametlikku telefonirakendust ja seega võivad nad kõigepealt piirata seadmesse saadetavate andmete hulka, et hoida ära puhvri ületäitumist, mis muidu võiks tekkida.

Iroonilisel kombel hoolitsesid nad väga selle eest, et mitte ainult ei jääks teie seadme õigeks toimimiseks vajalik 68-baidine piirang, vaid isegi selle eest, et saaksite sisestada vaid 30 tähemärki.

Me kõik teame, miks on kohutav mõte lasta kliendi poolel veakontroll teha, selle asemel et kontrollida (või veel parem, ka seda) serveri poolel:

  • Kliendikood ja serverikood võivad ühilduvusest kõrvale kalduda. Tulevased kliendirakendused võivad otsustada, et 72-tähemärgilised nimed on hea valik, ja hakata serverisse saatma rohkem andmeid, kui see ohutult hakkama saab. Tulevased serveripoolsed kodeerijad võivad märgata, et keegi ei kasutanud kunagi reserveeritud 68 baiti, ja otsustada, et 24 peaks olema enam kui piisav.
  • Ründaja võib rakendusega mitte vaeva näha. Loodes ja edastades seadmesse oma päringuid, jätaksid nad triviaalselt mööda kõik turvakontrollid, mis sõltuvad ainult rakendusest.

Teadlased suutsid kiiresti proovida üha pikemaid nimesid kuni selleni, et nad võisid Wemo seadme oma äranägemise järgi krahhi teha, kirjutades üle uue nime jaoks reserveeritud mälupuhvri lõppu ja rikkudes kohe järgnevates baitides salvestatud andmeid.

Virna rikkumine

Kahjuks lõpetab enamik tarkvara pinupõhises operatsioonisüsteemis pinupõhiste ajutiste mälupuhvritega, mis on paigutatud nii, et enamikule neist puhvritest järgneb täpselt teine ​​​​oluline mäluplokk, mis ütleb programmile, kuhu minna, kui see on lõpetanud. see teeb praegu.

Tehniliselt on need "kuhu edasi minna" andmetükid on tuntud kui tagastusaadressidja need salvestatakse automaatselt, kui programm kutsub välja nn a funktsioonvõi alamprogramm, mis on kooditükk (näiteks "printige see sõnum" või "hüpik hoiatusdialoog"), mida soovite kasutada oma programmi mitmes osas.

Tagasisaatmisaadress salvestatakse maagiliselt pinu iga kord, kui alamprogrammi kasutatakse, et arvuti saaks automaatselt "lahti kerida" oma tee, et jõuda tagasi sinna, kust alamprogramm kutsuti, mis võib iga kord selle aktiveerimisel erineda.

(Kui alamprogrammil oleks fikseeritud tagastusaadress, saaksite sellele alati helistada ainult ühest kohast oma programmis, mis muudaks selle koodi eraldi alamprogrammi pakkimise mõttetuks.)

Nagu võite ette kujutada, kui te tallate selle maagilise tagasisaatmisaadressi enne, kui alamprogramm töö lõpetab, siis kui see lõpeb, "keerab" see end usaldavalt, kuid teadmata valesse kohta.

Väikese (või võib-olla suure) õnne korral võib ründaja ette ennustada, kuidas loovalt tagastusaadressi tallata ja seeläbi programmi tahtlikult ja pahatahtlikult valesti suunata.

Selle asemel, et lihtsalt kokku kukkuda, võidakse valesti suunatud programm käivitada ründaja valitud koodi, põhjustades nii nn. koodi kaugkäivitamine exploit ehk RCE.

Seda tüüpi ärakasutamise eest aitavad kaitsta kaks levinumat kaitsemehhanismi:

  • Aadressiruumi paigutuse randomiseerimine, tuntud ka kui ASLR. Operatsioonisüsteem laadib sihilikult programme veidi erinevatesse mälukohtadesse iga kord, kui need käitatakse. Seetõttu on ründajatel raskem ära arvata, kuidas vigaseid programme valesti suunata viisil, mis lõpuks saab ja säilitab kontrolli, selle asemel et lihtsalt koodi kokkujooksda.
  • Virna kanaarilinnud, nimetatud lindude järgi, keda kaevurid varem maa alla kaasa võtsid, sest nad minestasid metaani juuresolekul, andes seega julma, kuid tõhusa varajase hoiatuse plahvatusohu eest. Programm lisab teadlikult teadaoleva, kuid juhusliku andmeploki täpselt tagastusaadressi ette iga kord, kui alamprogrammi kutsutakse, nii et puhvri ületäitumine kirjutab esmalt vältimatult ja tuvastatavalt üle "kanaari", enne kui see ületab piisavalt kaugele, et tallata. kõige tähtsamal tagastusaadressil.

Et oma ärakasutamist kiiresti ja usaldusväärselt tööle saada, pidid teadlased sundima Wemo pistikut ASLR-i välja lülitama, mida kaugründajad teha ei saaks, kuid paljudel päriselus katsetel võib ründajatel siiski õnne saada, arvake õigesti. programmi poolt kasutatavatel mäluaadressidel ja saate ikkagi kontrolli.

Kuid teadlased ei pidanud muretsema virna kanaari probleemi pärast, sest lollakas rakendus oli kompileeritud selle lähtekoodist ja funktsioon "sisesta kanaarilindude kontrollimise ohutusjuhised" oli välja lülitatud.

(Kanaari kaitstud programmid on tavaliselt veidi suuremad ja aeglasemad kui kaitsmata programmid, kuna igas alamprogrammis on ohutuskontrolli tegemiseks vaja lisakoodi.)

Mida teha?

  • Kui olete Wemo Smart Plug V2 omanik, veenduge, et te pole oma koduruuterit konfigureerinud nii, et see võimaldaks seadmele juurdepääsu "väljastpoolt" Interneti kaudu. See vähendab seda, mida žargoonis nimetatakse teie rünnaku pindala.
  • Kui teil on ruuter, mis toetab funktsiooni Universal Plug and Play, tuntud ka kui UPnP, veenduge, et see oleks välja lülitatud. UPnP muudab siseseadmete avanemise kõrvalistele isikutele teadaolevalt lihtsaks.
  • Kui olete programmeerija, vältige tarkvara turvafunktsioonide (nt virnakaitse või virna kontrollimine) väljalülitamist vaid mõne baidi säästmiseks. Kui teil hakkab tõesti mälu saama, proovige oma jalajälge vähendada, parandades koodi või eemaldades funktsioone, mitte vähendades turvalisust, et saaksite rohkem sisse toppida.

Ajatempel:

Veel alates Alasti turvalisus