25 sårbarheter i RTOS Zephyr, inkludert de som utnyttes via en ICMP-pakke

Forskere fra NCC Group publisert gratis resultater for prosjektrevisjon Zephyr, utvikle seg et sanntidsoperativsystem (RTOS), rettet mot å utstyre enheter som samsvarer med Internet of Things-konseptet (IoT, Internet of Things). Under tilsynet ble det avdekket 25 sårbarheter i Zephyr og 1 sårbarhet i MCUboot. Zephyr utvikles med deltagelse av Intel-selskaper.

Totalt ble det identifisert 6 sårbarheter i nettverksstakken, 4 i kjernen, 2 i kommandoskallet, 5 i systemanropsbehandlere, 5 i USB-undersystemet og 3 i fastvareoppdateringsmekanismen. To problemer er vurdert som kritiske, to er høye, 9 er moderate, 9 er lave og 4 er til vurdering. Kritiske problemer påvirker IPv4-stakken og MQTT-parseren, farlige påvirker USB-masselagring og USB DFU-drivere. På tidspunktet for avsløring av informasjon var det utarbeidet rettelser kun for de 15 farligste sårbarhetene; problemer som fører til tjenestenekt eller assosiert med feil i ytterligere kjernebeskyttelsesmekanismer forblir ukorrigert.

En eksternt utnyttbar sårbarhet er identifisert i plattformens IPv4-stack, som fører til minnekorrupsjon ved behandling av ICMP-pakker modifisert på en bestemt måte. Et annet alvorlig problem ble funnet i MQTT-protokollparseren, som er forårsaket av mangel på riktig kontroll av overskriftsfeltlengde og kan føre til ekstern kjøring av kode. Mindre alvorlige tjenestenektproblemer finnes i IPv6-stakken og implementeringen av CoAP-protokollen.

Andre problemer kan utnyttes lokalt for å forårsake tjenestenekt eller kjøre kode på kjernenivå. De fleste av disse sårbarhetene er relatert til mangelen på riktig kontroll av systemanropsargumenter, og kan føre til at vilkårlige områder av kjerneminnet blir skrevet til og lest fra. Problemene strekker seg også til selve systemanropsbehandlingskoden - å ringe et negativt systemanropsnummer resulterer i et heltallsoverløp. Kjernen identifiserte også problemer med implementeringen av ASLR-beskyttelse (randomisering av adresserom) og mekanismen for å sette kanariemerker på stabelen, noe som gjør disse mekanismene ineffektive.

Mange problemer påvirker USB-stakken og individuelle drivere. For eksempel kan problemer i USB-masselagring forårsake bufferoverløp og kjøre kode på kjernenivå når enheten er koblet til en USB-vert kontrollert av angriperen. En sårbarhet i USB DFU, en driver for lasting av ny fastvare via USB, lar deg laste et modifisert fastvarebilde inn i den interne Flash-en til mikrokontrolleren uten å bruke kryptering og omgå den sikre oppstartsmodusen med verifisering av komponenter ved hjelp av en digital signatur. I tillegg ble den åpne bootloader-koden studert MCUboot, der en godartet sårbarhet ble funnet,
som kan føre til bufferoverløp ved bruk av SMP (Simple Management Protocol)-protokollen over UART.

Husk at i Zephyr er kun ett globalt delt virtuelt adresserom (SASOS, Single Address Space Operating System) gitt for alle prosesser. Applikasjonsspesifikk kode kombineres med en applikasjonsspesifikk kjerne for å danne en monolitisk kjørbar fil som kan lastes og kjøres på spesifikk maskinvare. Alle systemressurser bestemmes på kompileringstidspunktet, noe som reduserer kodestørrelsen og øker ytelsen. Systembildet kan bare inneholde de kjernefunksjonene som kreves for å kjøre applikasjonen.

Det er bemerkelsesverdig at blant de viktigste fordelene med Zephyr nevnt utvikling med tanke på sikkerhet. Godkjentat alle stadier av utviklingen gjennomgår obligatoriske stadier for å bekrefte sikkerheten til koden: fuzzing-testing, statisk analyse, penetrasjonstesting, kodegjennomgang, analyse av bakdørsimplementering og trusselmodellering.

Kilde: opennet.ru

Legg til en kommentar