Belkin Wemo Smart Plug V2 – puskurin ylivuoto, jota ei korjata

Belkin Wemo Smart Plug V2 – puskurin ylivuoto, jota ei korjata

Lähdesolmu: 2657924

IoT-tietoturvayhtiö Sternumin tutkijat kaivettiin suosittu kotiautomaation verkkopistoke tunnetulta laitemerkiltä Belkiniltä.

Malli, jota he katsoivat, Wemo Mini Smart Plug (F7C063) on ilmeisesti lähestymässä käyttöikänsä loppua, mutta löysimme paljon niitä myytävänä verkosta sekä yksityiskohtaiset neuvot ja ohjeet niiden asentamiseen Belkinin sivustolta.

Vaikka ne olisivatkin vanhoja (lyhyen aikavälin modernissa merkityksessä), tutkijat huomauttivat, että:

Alkuperäinen kiinnostuksemme laitetta kohtaan johtui siitä, että niitä oli useita laboratoriossamme ja niitä käytettiin kodeissamme, joten halusimme vain nähdä, kuinka turvallista (tai ei) niiden käyttö on. [… T]tämä näyttää olevan melko suosittu kuluttajalaite[; b]Näiden lukujen perusteella on turvallista arvioida, että Amazonin kokonaismyynnin pitäisi olla satoja tuhansia.

Yksinkertaisesti sanottuna monet ihmiset ovat jo ostaneet ja kytkeneet nämä laitteet ja käyttävät niitä juuri nyt ohjaamaan kotinsa pistorasioita.

Yksinkertaisesti sanottuna "älypistoke" on pistorasia, jonka liität olemassa olevaan pistorasiaan ja jonka välissä on Wi-Fi-ohjattu kytkin seinäpistorasian etuosassa olevan verkkopistorasian ja samannäköisen pistorasian välillä. älypistokkeen etuosa. Ajattele sitä kuin virtalähdettä, joka sen sijaan, että muuttaisi esimerkiksi pyöreän europistorasian kolmiomaiseksi Iso-Britannian pistorasian muotoiseksi, muuntaa esimerkiksi manuaalisesti kytketyn US-pistorasian elektronisesti kytkettäväksi US-pistorasiaksi, jota voidaan ohjata etänä sovelluksen tai sovelluksen kautta. web-tyyppinen käyttöliittymä.

S IoT:ssä…

Ongelma monissa niin sanotuissa Internet of Things (IoT) -laitteissa, kuten vanha vitsi kuuluu, on se, että IoT:n S-kirjain tarkoittaa turvallisuutta…

…tarkoittaa tietysti sitä, että kyberturvallisuutta ei usein ole niin paljon kuin voisi odottaa, tai sitä ei ole ollenkaan.

Kuten voit kuvitella, epävarma kodin automaatiolaite, erityisesti sellainen, jonka avulla joku talosi ulkopuolella tai jopa toisella puolella maailmaa voi kytkeä sähkölaitteita päälle ja pois päältä mielensä mukaan, voi aiheuttaa paljon ongelmia.

Olemme kirjoittaneet IoT:n epävarmuudesta useissa eri tuotteissa aiemmin, alkaen internet vedenkeittimet (kyllä, todella), joka voi vuotaa kodin Wi-Fi-salasanasi turvakameroihin, joita roistot voivat käyttää silmällä sinua päinvastoin, verkkoon liitettyihin levyasemiin, jotka ovat vaarassa saada ransomwaren roiskuma suoraan internetin kautta.

Tässä tapauksessa tutkijat löysivät Wemo Mini Smart Plugista koodin etäsuoritusreiän tammikuussa 2023, ilmoittivat siitä helmikuussa 2023 ja saivat CVE-numeron maaliskuussa 2023 (CVE-2023-27217).

Vaikka todellisessa maailmassa on lähes varmasti monia tällaisia ​​laitteita aktiivisessa käytössä, Belkin on ilmeisesti sanonut, että se pitää laitetta "elämänsä lopussa" ja että turva-aukkoa ei siksi korjata.

(Emme ole varmoja, kuinka hyväksyttävää tällainen "käyttöiän päätyttyä" irtisanominen olisi, jos laitteen 120 V AC tai 230 V AC sähköpiireissä olisi vika, kuten mahdollisuus ylikuumentua ja päästää haitallisia kemikaaleja tai asetusten tuleen, mutta näyttää siltä, ​​että viat pienjännitteisessä digitaalisessa elektroniikassa tai laitteen laiteohjelmistossa voidaan jättää huomioimatta, vaikka ne voisivat johtaa siihen, että kyberhyökkääjä vilkuttaa laitteen verkkovirtakytkintä päälle ja pois päältä toistuvasti.)

Kun ystävälliset nimet ovat vihollisesi

Ongelma, jonka tutkijat löysivät, oli vanha hyvä pinopuskurin ylivuoto laiteohjelmiston osassa, jonka avulla voit muuttaa ns FriendlyName laitteesta – tekstimerkkijono, joka näkyy, kun muodostat yhteyden siihen puhelimesi sovelluksella.

Oletuksena nämä laitteet käynnistyvät ystävällisellä nimellä Wemo mini XYZ, Jossa XYZ tarkoittaa kolmea heksadesimaalilukua, jotka oletamme valittuna näennäissatunnaisesti.

Tämä tarkoittaa, että vaikka omistat kaksi tai kolme tällaista laitetta, ne alkavat melkein varmasti eri nimillä, jotta voit määrittää ne helposti.

Mutta luultavasti haluat nimetä ne uudelleen myöhemmin, jotta ne on helpompi erottaa toisistaan ​​tulevaisuudessa antamalla ystävälliset nimet, kuten TV power, Laptop charger ja Raspberry Pi server.

Belkinin ohjelmoijat (tai tarkemmin sanottuna näihin Belkin-merkkisiin laitteisiin päätyneen koodin ohjelmoijat, jotka ovat saattaneet toimittaa älyliitinohjelmistoja myös muille tuotenimille) ilmeisesti varasivat 68 tavua tilapäistä tallennustilaa seuratakseen uusi nimi uudelleennimeämisen aikana.

Mutta he unohtivat tarkistaa, että antamasi nimi mahtuisi tuohon 68-tavuiseen paikkaan.

Sen sijaan he olettivat, että käyttäisit heidän virallista puhelinsovellustaan ​​laitteen uudelleennimeämisprosessin suorittamiseen ja että he voisivat alun perin rajoittaa laitteeseen lähetettävän tiedon määrää estääkseen puskurin ylivuodon, joka muutoin voisi olla mahdollista. nousta.

Ironista kyllä, he eivät pitäneet sinua vain 68 tavun rajassa, joka vaaditaan laitteen toimimiseksi oikein, vaan jopa rajoittaakseen sinun kirjoittavan vain 30 merkkiä.

Tiedämme kaikki, miksi on kauhea idea antaa asiakaspuolen tehdä virheentarkistus sen sijaan, että se tarkastaisi sen sijaan (tai mikä vielä parempaa, myös) palvelinpuolella:

  • Asiakaskoodi ja palvelinkoodi saattavat poiketa yhdenmukaisuudesta. Tulevat asiakassovellukset saattavat päättää, että 72-merkkiset nimet olisivat hyvä vaihtoehto ja alkavat lähettää palvelimelle enemmän dataa kuin se pystyy turvallisesti käsittelemään. Tulevat palvelinpuolen koodaajat saattavat huomata, että kukaan ei koskaan näyttänyt käyttävän kaikkia varattuja 68 tavua, ja päättävät yksiselitteisesti, että 24:n pitäisi olla enemmän kuin tarpeeksi.
  • Hyökkääjä voi halutessaan olla puuttumatta sovellukseen. Luomalla ja lähettämällä omat pyyntönsä laitteelle he ohittaisivat kaikki turvatarkastukset, jotka perustuvat pelkästään sovellukseen.

Tutkijat pystyivät nopeasti kokeilemaan yhä pidempiä nimiä siihen pisteeseen, että he saattoivat kaataa Wemo-laitteen haluamallaan tavalla kirjoittamalla uudelle nimelle varatun muistipuskurin loppuun ja korruptoimalla välittömästi seuraaviin tavuihin tallennettuja tietoja.

Korruptoi pinon

Valitettavasti pinopohjaisessa käyttöjärjestelmässä useimmat ohjelmistot päätyvät pinopohjaisiin väliaikaisiin muistipuskureihinsa, jotka on sijoitettu siten, että useimpia näistä puskureista seuraa tiiviisti toinen tärkeä muistilohko, joka kertoo ohjelmalle minne mennä, kun se on valmis. se tekee juuri nyt.

Teknisesti nämä "minne seuraavaksi" -tietopalat tunnetaan nimellä palautusosoitteet, ja ne tallennetaan automaattisesti, kun ohjelma kutsuu ns. a toimintotai aliohjelma, joka on koodipala (esimerkiksi "tulosta tämä viesti" tai "näytä varoitusikkuna"), jota haluat käyttää useissa ohjelman osissa.

Paluuosoite tallennetaan taianomaisesti pinoon joka kerta, kun aliohjelmaa käytetään, jotta tietokone voi automaattisesti "purkaa" polkunsa päästäkseen takaisin sinne, mistä aliohjelma kutsuttiin, mikä voi olla erilainen joka kerta, kun se aktivoidaan.

(Jos aliohjelmalla olisi kiinteä palautusosoite, voit kutsua sitä vain yhdestä paikasta ohjelmassasi, mikä tekisi turhaksi vaivautua pakkaamaan tätä koodia erilliseen aliohjelmaan.)

Kuten voitte kuvitella, jos poljet tuon maagisen paluuosoitteen ennen kuin alirutiini päättyy, se "purkaa" itsensä luottavaisesti mutta tietämättään väärään paikkaan.

Pienellä (tai ehkä paljon) onnella hyökkääjä voi ennakoida etukäteen, kuinka paluuosoite tallataan luovasti ja ohjataan siten ohjelmaa harhaan tahallisella ja haitallisella tavalla.

Pelkän kaatumisen sijaan väärin suunnattu ohjelma voidaan huijata suorittamaan hyökkääjän valitsemaa koodia, mikä aiheuttaa ns. koodin etäsuorittaminen exploit tai RCE.

Kaksi yleistä puolustuskeinoa auttavat suojaamaan tämän tyyppisiltä hyväksikäytöiltä:

  • Osoitetilan asettelun satunnaistaminen, joka tunnetaan myös nimellä ASLR. Käyttöjärjestelmä lataa tietoisesti ohjelmia hieman eri muistipaikoista joka kerta, kun ne suoritetaan. Tämän vuoksi hyökkääjien on vaikeampi arvata, kuinka virheelliset ohjelmat voidaan ohjata väärin tavalla, joka lopulta saa ja säilyttää hallinnan sen sijaan, että pelkkä koodi kaatuisi.
  • Pinoa kanariat, nimetty niiden lintujen mukaan, joita kaivostyöläiset veivät mukanaan maan alle, koska ne pyörtyivät metaanin läsnäollessa, mikä antoi julman mutta tehokkaan varhaisvaroituksen räjähdysvaarasta. Ohjelma lisää tietoisesti tunnetun, mutta satunnaisen tietolohkon juuri paluuosoitteen eteen aina, kun aliohjelmaa kutsutaan, jotta puskurin ylivuoto ylikirjoittaa väistämättä ja havaittavasti ensin "kanaarin" ennen kuin se ylittyy tarpeeksi pitkälle polkeakseen. tärkeässä palautusosoitteessa.

Saadakseen hyödyksi toimimaan nopeasti ja luotettavasti tutkijoiden täytyi pakottaa Wemo-pistoke sammuttamaan ASLR, mitä etähyökkääjät eivät pystyisi tekemään, mutta useilla yrityksillä tosielämässä hyökkääjillä saattaa kuitenkin käydä onnea, arvaa oikein. ohjelman käyttämissä muistiosoitteissa ja saat hallinnan joka tapauksessa.

Mutta tutkijoiden ei tarvinnut murehtia pino-kanariaongelmasta, koska buginen sovellus oli käännetty sen lähdekoodista "insert canary-checking safety directions" -ominaisuuden ollessa pois päältä.

(Canary-suojatut ohjelmat ovat tyypillisesti hieman suurempia ja hitaampia kuin suojaamattomat, koska jokaisessa aliohjelmassa tarvitaan lisäkoodia turvallisuustarkistuksia varten.)

Mitä tehdä?

  • Jos olet Wemo Smart Plug V2:n omistaja, varmista, että et ole määrittänyt kotireitittimesi sallimaan laitteen käytön "ulkopuolelta" Internetin kautta. Tämä vähentää sitä, mitä ammattikielessä kutsutaan sinun hyökkäyspinta-ala.
  • Jos sinulla on reititin, joka tukee Universal Plug and Play -ominaisuutta, tunnetaan myös nimellä UPnP, varmista, että se on sammutettu. UPnP tekee tunnetusti helpoksi sisäisten laitteiden avautua vahingossa ulkopuolisille.
  • Jos olet ohjelmoija, Vältä ohjelmiston turvaominaisuuksien (kuten pinosuojauksen tai pinon kanaarin tarkistuksen) poistamista käytöstä vain muutaman tavun säästämiseksi. Jos muisti on todella loppumassa, yritä pienentää jalanjälkeäsi parantamalla koodia tai poistamalla ominaisuuksia sen sijaan, että heikennät turvallisuutta, jotta voit ahmia lisää.

Aikaleima:

Lisää aiheesta Naked Security