25 haavoittuvuutta RTOS Zephyrissä, mukaan lukien ICMP-paketin kautta hyödynnetyt

NCC Groupin tutkijat julkaistu ilmaiset projektitarkastuksen tulokset Tuulenhenkäys, kehittymässä reaaliaikainen käyttöjärjestelmä (RTOS), jonka tarkoituksena on varustaa laitteita, jotka vastaavat esineiden internetin (IoT, Internet of Things) käsitettä. Tarkastuksessa paljastui 25 haavoittuvuutta Zephyrissä ja 1 haavoittuvuus MCUbootissa. Zephyria kehitetään Intel-yhtiöiden osallistuessa.

Yhteensä 6 haavoittuvuutta tunnistettiin verkkopinossa, 4 ytimessä, 2 komentokuljessa, 5 järjestelmäkutsujen käsittelijöissä, 5 USB-alijärjestelmässä ja 3 laiteohjelmiston päivitysmekanismissa. Kahdelle ongelmalle on määritetty kriittinen vakavuustaso, kaksi - korkea, 9 - kohtalainen, 9 - matala ja 4 - harkittavaksi. Kriittiset ongelmat vaikuttavat IPv4-pinoon ja MQTT-jäsentimeen, vaaralliset taas USB-massamuistiin ja USB-DFU-ajureihin. Ilmoitushetkellä korjauksia valmisteltiin vain 15 vaarallisimpiin haavoittuvuuksiin, kun taas palvelunestoon tai ytimen lisäsuojausmekanismeihin liittyviä ongelmia ei ole korjattu.

Alustan IPv4-pinosta on tunnistettu etäkäyttöinen haavoittuvuus, joka johtaa muistin vioittumiseen erityisesti muokattuja ICMP-paketteja käsiteltäessä. Toinen vakava ongelma löydettiin MQTT-protokollan jäsentimestä, joka johtuu siitä, ettei otsikon kenttien pituutta ole tarkastettu kunnolla ja joka voi johtaa koodin etäsuorittamiseen. Vähemmän vakavia palvelunesto-ongelmia löytyy IPv6-pinosta ja CoAP-protokollan toteutuksesta.

Muita ongelmia voidaan hyödyntää paikallisesti palveluneston tai koodin suorittamisen aiheuttamiseksi ydintasolla. Useimmat näistä haavoittuvuuksista liittyvät järjestelmän kutsuargumenttien asianmukaisen tarkastuksen puutteeseen ja voivat johtaa mielivaltaisten ytimen muistialueiden kirjoittamiseen ja lukemiseen. Ongelmat ulottuvat myös suoraan järjestelmän puhelunkäsittelykoodiin - puhelu negatiiviseen järjestelmänumeroon johtaa kokonaislukujen ylivuotoon. Ydin havaitsi myös ongelmia ASLR-suojauksen (osoiteavaruuden satunnaistaminen) toteutuksessa ja pinon kanarianmerkkien asettamismekanismissa, mikä teki näistä mekanismeista tehottomia.

Monet ongelmat vaikuttavat USB-pinoon ja yksittäisiin ohjaimiin. Esimerkiksi ongelma USB-massamuistissa mahdollistaa puskurin ylivuodon ja ydintason koodin suorittamisen, kun laite on kytketty ohjattuun hyökkäävään USB-isäntään. USB DFU:n haavoittuvuus, ohjain uuden laiteohjelmiston lataamiseen USB:n kautta, mahdollistaa muokatun laiteohjelmistokuvan lataamisen mikro-ohjaimen sisäiseen Flashiin ilman salausta ja suojatun käynnistystilan ohittamista komponenttien digitaalisella allekirjoituksella. Lisäksi tutkittiin avoimen latauslaitteen koodia MCUboot, josta löytyi yksi hyvänlaatuinen haavoittuvuus,
mikä voi johtaa puskurin ylivuotoon, kun käytetään SMP:tä (Simple Management Protocol) UART:n kautta.

Muista, että Zephyrissä kaikille prosesseille tarjotaan vain yksi globaalisti jaettu virtuaalinen osoiteavaruus (SASOS, Single Address Space Operating System). Sovelluskohtainen koodi yhdistetään sovelluskohtaiseen ytimeen monoliittisen suoritettavan tiedoston muodostamiseksi, joka ladataan ja suoritetaan tietyllä laitteistolla. Kaikki järjestelmäresurssit määritetään käännösvaiheessa, mikä pienentää koodin kokoa ja parantaa suorituskykyä. Vain ne ytimen ominaisuudet, jotka tarvitaan sovelluksen suorittamiseen, voidaan sisällyttää järjestelmänäköistiedostoon.

On huomionarvoista, että Zephyrin tärkeimpiä etuja mainittujen kehitystä turvallisuutta silmällä pitäen. Hyväksyttyettä kaikki kehitysvaiheet käyvät läpi pakolliset koodin turvallisuuden varmistusvaiheet: fuzzing-testaus, staattinen analyysi, penetraatiotestaus, koodin tarkistus, takaoven injektioanalyysi ja uhkamallinnus.

Lähde: opennet.ru

Lisää kommentti