Belkin Wemo Smart Plug V2 – a puffer túlcsordulása, amely nem lesz javítva

Belkin Wemo Smart Plug V2 – a puffer túlcsordulása, amely nem lesz javítva

Forrás csomópont: 2657924

A Sternum IoT biztonsági cég kutatói ástak be népszerű otthonautomatizálási hálózati csatlakozó a jól ismert Belkin készülékmárkától.

A modell, amit néztek, a Wemo Mini Smart Plug (F7C063) látszólag eltarthatósági ideje a végéhez közeledik, de rengeteget találtunk belőlük eladásra az interneten, valamint részletes tanácsokat és útmutatást a Belkin webhelyén a beállításukról.

Bár régiek (rövid távon modern értelemben), a kutatók megjegyezték, hogy:

Kezdetben az eszköz iránti érdeklődésünk abból fakadt, hogy több ilyen hevert a laborunkban, és otthonunkban is használtuk, ezért csak azt akartuk látni, mennyire biztonságos (vagy nem) a használatuk. [… T]úgy tűnik, ez egy nagyon népszerű fogyasztói eszköz[; b]ezek a számok alapján biztonságosan becsülhető, hogy az Amazonon végzett teljes eladások százezres nagyságrendűek lehetnek.

Egyszerűen fogalmazva, sokan vannak, akik már megvásárolták és bedugták ezeket a dolgokat, és jelenleg is használják őket otthonaik elektromos aljzatainak vezérlésére.

Az „okosdugó” leegyszerűsítve egy olyan konnektor, amelyet egy meglévő fali aljzatba kell bedugni, és amely egy Wi-Fi-vel vezérelt kapcsolót helyez el a fali aljzat elején található hálózati aljzat és egy ugyanolyan kinézetű konnektor között. az intelligens csatlakozó eleje. Képzeld el úgy, mint egy hálózati adaptert, amely ahelyett, hogy mondjuk egy kerek Euro-aljzatot háromszög alakú brit konnektorrá alakítana át, mondjuk egy manuálisan kapcsolható US-aljzatot átalakít egy elektronikusan kapcsolható US-aljzattá, amely egy alkalmazáson keresztül távolról vezérelhető. web típusú felület.

Az S az IoT-ben…

A régi vicc szerint az a probléma sok úgynevezett Internet of Things (IoT) eszközzel, hogy az IoT-ben az „S” betű jelenti a biztonságot...

…természetesen azt jelenti, hogy gyakran nincs akkora kiberbiztonság, mint amire számítana, vagy egyáltalán nincs.

Elképzelhető, hogy egy bizonytalan otthoni automatizálási eszköz, különösen az, amely lehetővé teszi, hogy valaki a házán kívül, vagy akár a világ másik felén tetszés szerint be- és kikapcsolhassa az elektromos készülékeket, rengeteg bajhoz vezethet.

Korábban már írtunk az IoT bizonytalanságáról különféle termékek széles körében, től internetes vízforralók (igen, tényleg), ami kiszivárogtathatja az otthoni Wi-Fi jelszavát a biztonsági kameráknak, amelyek segítségével a szélhámosok megtarthatják szemed rajtad ahelyett, hogy fordítva, a hálózatra csatlakoztatott lemezmeghajtókra kerülhet sor ransomware fröcskölte közvetlenül az interneten keresztül.

Ebben az esetben a kutatók 2023 januárjában távoli kódvégrehajtási lyukat találtak a Wemo Mini Smart Plugban, 2023 februárjában jelentették, és 2023 márciusában kaptak rá egy CVE-számot (CVE-2023 27217-).

Sajnos annak ellenére, hogy szinte biztosan sok ilyen eszköz van aktívan használatban a való világban, a Belkin láthatóan azt mondta, hogy szerinte az eszköz „élettartam végén jár”, ezért a biztonsági rést nem fogják befoltozni.

(Nem vagyunk biztosak benne, mennyire lenne elfogadható az ilyen típusú „élettartam végén” elállás, ha kiderül, hogy az eszköz 120 V-os vagy 230 V-os váltóáramú elektromos áramkörében hibás, mint például a túlmelegedés és az ártalmas vegyszerek kibocsátása vagy a beállítás lángra lobban, de úgy tűnik, hogy a készülék kisfeszültségű digitális elektronikájának vagy firmware-jének hibáit figyelmen kívül lehet hagyni, még akkor is, ha az a kibertámadó azt eredményezheti, hogy tetszés szerint ismételten be- és kikapcsolja a készülék hálózati kapcsolóját.)

Amikor a barátságos nevek az ellenséged

A kutatók által felfedezett probléma jó régi volt verem puffer túlcsordulás a készülékszoftver azon részén, amely lehetővé teszi az ún FriendlyName az eszközről – a szöveges karakterlánc, amely akkor jelenik meg, amikor egy alkalmazással csatlakozik hozzá a telefonon.

Alapértelmezés szerint ezek az eszközök egy barátságos névvel indulnak el a következőhöz hasonló módon Wemo mini XYZ, Ahol XYZ három hexadecimális számjegyet jelöl, amelyeket feltételezésünk szerint pszeudovéletlenszerűen választottak ki.

Ez azt jelenti, hogy ha két vagy három ilyen eszközzel rendelkezik, akkor szinte biztosan más néven indulnak, így könnyen beállíthatja őket.

De valószínűleg később át szeretné nevezni őket, hogy könnyebben meg lehessen különböztetni őket a jövőben, ha barátságos neveket ad hozzá, mint pl. TV power, Laptop charger és a Raspberry Pi server.

A Belkin programozói (pontosabban azok a kódok programozói, amelyek ezekbe a Belkin márkájú eszközökbe kerültek, akik esetleg más márkanevekhez is szállíthattak intelligens csatlakozószoftvert) láthatóan 68 bájt ideiglenes tárhelyet foglaltak le, hogy nyomon követhessék a új név az átnevezési folyamat során.

De elfelejtették ellenőrizni, hogy az Ön által megadott név belefér-e abba a 68 bájtos nyílásba.

Ehelyett azt feltételezték, hogy a hivatalos telefonos alkalmazásukat használja az eszköz átnevezési folyamatára, és így elsősorban az eszközre küldött adatok mennyiségét korlátozhatják, hogy megakadályozzák a puffer túlcsordulását, amely egyébként előfordulhat. felmerülhet.

Ironikus módon nemcsak arra ügyeltek, hogy ne csak az eszköz megfelelő működéséhez szükséges 68 bájtos korlátot tartsák be, hanem arra is, hogy mindössze 30 karaktert írjanak be.

Mindannyian tudjuk, hogy miért borzasztó ötlet hagyni, hogy az ügyféloldal végezze el a hibaellenőrzést, ahelyett, hogy a szerveroldalon (vagy ami még jobb, ha azt is) ellenőrizné:

  • Előfordulhat, hogy a kliens kód és a kiszolgáló kódja eltér a megfelelőségtől. A jövőbeli ügyfélalkalmazások úgy dönthetnek, hogy a 72 karakterből álló nevek jó megoldást jelentenek, és több adatot küldenek a szervernek, mint amennyit biztonságosan kezelni tud. A leendő szerveroldali kódolók észrevehetik, hogy úgy tűnt, hogy soha senki nem használja fel a teljes lefoglalt 68 bájtot, és szó nélkül úgy döntenek, hogy 24 bájtnak többnek kell lennie.
  • A támadó dönthet úgy, hogy nem foglalkozik az alkalmazással. Saját kérésük generálásával és az eszközre történő továbbításával triviálisan megkerülnének minden olyan biztonsági ellenőrzést, amely kizárólag az alkalmazásra támaszkodik.

A kutatók gyorsan kipróbálhatták az egyre hosszabb neveket addig a pontig, hogy tetszés szerint összeomolhassák a Wemo-eszközt, ha átírják az új név számára fenntartott memóriapuffer végét, és megsértik a közvetlenül ezt követő bájtokban tárolt adatokat.

A verem megrongálása

Sajnos a verem alapú operációs rendszerekben a legtöbb szoftver verem alapú ideiglenes memóriapufferekkel végződik, így ezeknek a puffereknek a többségét szorosan követi egy másik létfontosságú memóriablokk, amely megmondja a programnak, hogy merre menjen, ha befejezte, mit most éppen működik.

Technikailag ezeket a „hova tovább” adattömböket úgy ismerjük, mint visszaküldési címek, és automatikusan mentésre kerülnek, amikor egy program meghívja az úgynevezett a funkcióvagy alprogram, amely egy kóddarab (például „nyomtassa ki ezt az üzenetet” vagy „ugrik fel egy figyelmeztető párbeszédpanelt”), amelyet a program több részében is használni szeretne.

A visszaküldési cím varázslatosan rögzítésre kerül a veremben az alprogram minden egyes használatakor, így a számítógép automatikusan „letekerheti” az útját, hogy visszajusson oda, ahonnan a szubrutint hívták, ami minden aktiváláskor más lehet.

(Ha egy szubrutinnak fix visszaküldési címe volt, akkor mindig csak egy helyről hívhatná meg a programban, ami értelmetlenné tenné, hogy a kódot egy külön szubrutinba csomagolja.)

Ahogy el tudod képzelni, ha taposod ezt a varázslatos visszatérési címet, mielőtt az szubrutin futna, majd amikor befejezi, magabiztosan, de tudatlanul rossz helyre „letekeredik”.

Egy kis (vagy talán sok) szerencsével a támadó előre megjósolhatja, hogyan tapossa el kreatívan a visszaküldési címet, és ezáltal szándékos és rosszindulatú módon félreirányítja a programot.

Ahelyett, hogy pusztán összeomolna, a rosszul irányított program becsapható a támadó által választott kód futtatására, ami ún. távoli kódfuttatás exploit, vagy RCE.

Két gyakori védelem segít az ilyen jellegű kizsákmányolásokkal szemben:

  • Címtérelrendezés véletlenszerűsítése, más néven ASLR. Az operációs rendszer szándékosan tölti be a programokat kissé eltérő memóriahelyeken minden egyes futáskor. Ez megnehezíti a támadók számára, hogy kitalálják, hogyan irányítsák félre a hibás programokat oly módon, hogy végül megszerezzék és megtartsák az irányítást, ahelyett, hogy egyszerűen összeomolnák a kódot.
  • Verem a kanárik, azokról a madarakról nevezték el, amelyeket a bányászok a föld alá vittek magukkal, mert metán jelenlétében elájultak, így kegyetlen, de hatékony korai figyelmeztetést adva a robbanásveszélyre. A program szándékosan beszúr egy ismert, de véletlenszerű adatblokkot közvetlenül a visszatérési cím elé minden szubrutin meghívásakor, így a puffertúlcsordulás elkerülhetetlenül és észlelhetően felülírja először a „kanárit”, mielőtt az elég messzire túllépne ahhoz, hogy letaposja. a nagyon fontos visszaküldési címen.

Ahhoz, hogy a kizsákmányolásuk gyorsan és megbízhatóan működjön, a kutatóknak ki kellett kényszeríteniük a Wemo csatlakozót, hogy kikapcsolja az ASLR-t, amit a távoli támadók nem tudtak volna megtenni, de a való életben sok próbálkozással a támadók ennek ellenére szerencsések lehetnek, jól sejtik. a program által használt memóriacímeken, és mindenképp megkapja az irányítást.

A kutatóknak azonban nem kellett aggódniuk a stack canary probléma miatt, mert a hibás alkalmazást a forráskódjából fordították le, és kikapcsolták az „insert canary-checking safety information” funkciót.

(A Canary-védett programok jellemzően valamivel nagyobbak és lassabbak, mint a nem védettek, mivel minden szubrutinban szükség van a biztonsági ellenőrzésekhez.)

Mit kell tenni?

  • Ha Ön Wemo Smart Plug V2 tulajdonos, győződjön meg arról, hogy az otthoni útválasztót nem úgy konfigurálta, hogy az eszköz „kívülről”, az interneten keresztül elérhető legyen. Ez lecsökkenti azt, amit a zsargonban a te néven ismerünk támadási felület.
  • Ha olyan útválasztója van, amely támogatja az Universal Plug and Play funkciót, UPnP néven is ismert, győződjön meg arról, hogy ki van kapcsolva. Az UPnP köztudottan megkönnyíti, hogy a belső eszközök véletlenül megnyíljanak a kívülállók előtt.
  • Ha programozó vagy, ne kapcsolja ki a szoftveres biztonsági funkciókat (például a veremvédelem vagy a verem-ellenőrzés), csak néhány bájt megtakarítása érdekében. Ha valóban kifogy a memóriából, inkább a kód javításával vagy a funkciók eltávolításával csökkentse a lábnyomát, ne pedig a biztonság csökkentésével, hogy többet tudjon belezsúfolni.

Időbélyeg:

Még több Meztelen biztonság