Boj proti Rogue Toaster Army: Prečo je bezpečné kódovanie vo vstavaných systémoch našou obrannou hranou

Existuje veľa popkultúrnych odkazov na nečestnú AI a roboty a zariadenia, ktoré zapínajú svojich ľudských pánov. Ide o sci-fi, zábavu a fantáziu, no keďže internet vecí a pripojené zariadenia sú v našich domácnostiach čoraz rozšírenejšie, potrebujeme viac diskusií o kybernetickej bezpečnosti a bezpečnosti.

Softvér je všade okolo nás a je veľmi ľahké zabudnúť, ako veľmi sa spoliehame na riadky kódu pri vykonávaní všetkých tých šikovných vecí, ktoré nám poskytujú toľko inovácií a pohodlia.

Podobne ako webový softvér, rozhrania API a mobilné zariadenia môže byť zraniteľný kód vo vstavaných systémoch zneužitý, ak ho útočník odhalí.

Aj keď je nepravdepodobné, že armáda toasterov príde zotročiť ľudskú rasu (hoci robot Tesla je trochu znepokojujúci) v dôsledku kybernetického útoku, škodlivé kybernetické udalosti sú stále možné. Niektoré z našich áut, lietadiel a zdravotníckych zariadení sa pri vykonávaní kľúčových úloh spoliehajú aj na zložitý kód vstavaných systémov a vyhliadka na ohrozenie týchto objektov je potenciálne život ohrozujúca.

Rovnako ako každý iný typ softvéru, vývojári sú medzi prvými, ktorí dostanú kód do rúk, hneď na začiatku fázy tvorby. A podobne ako každý iný typ softvéru, aj tento môže byť živnou pôdou pre zákerné, bežné zraniteľnosti, ktoré môžu zostať neodhalené pred uvedením produktu do prevádzky.

Vývojári nie sú expertmi na bezpečnosť a žiadna spoločnosť by od nich nemala očakávať, že budú hrať túto rolu, no môžu byť vybavení oveľa silnejším arzenálom na boj s typmi hrozieb, ktoré sú pre nich relevantné. Vstavané systémy – zvyčajne napísané v C a C++ – sa budú používať častejšie, keďže naše technické potreby neustále rastú a menia sa a špecializované bezpečnostné školenia pre vývojárov o nástrojoch v tomto prostredí sú základnou obrannou stratégiou proti kybernetickým útokom.

Vybuchujúce fritézy, nemotorné vozidlá… sme v skutočnom nebezpečenstve?

Kým existujú niektoré štandardy a predpisy týkajúce sa osvedčených postupov bezpečného vývoja, aby sme boli v bezpečí, musíme urobiť oveľa presnejšie a zmysluplnejšie kroky smerom k všetkým typom zabezpečenia softvéru. Mohlo by sa zdať pritiahnuté za vlasy myslieť na problém, ktorý môže byť spôsobený tým, že sa niekto nabúral do fritézy, ale stalo sa to vo forme útoku na spustenie kódu na diaľku (umožnenie aktérovi hrozby zvýšiť teplotu na nebezpečnú úroveň), ako aj slabé miesta vedúce k prevzatiu vozidiel.

Vozidlá sú obzvlášť zložité, s viacerými zabudovanými systémami na palube, z ktorých každý sa stará o mikro funkcie; všetko od automatických stieračov až po schopnosti motora a bŕzd. Prepojené vozidlo s neustále rastúcim množstvom komunikačných technológií, ako sú WI-Fi, Bluetooth a GPS, predstavuje komplexnú digitálnu infraštruktúru, ktorá je vystavená viacerým útokom. A so 76.3 Očakáva sa, že do roku 2023 vyrazí na cesty celosvetovo milión pripojených vozidiel, čo predstavuje monolit obranných základov, ktoré majú položiť skutočnú bezpečnosť.

MISRA je kľúčovou organizáciou, ktorá úspešne bojuje proti hrozbám vstavaných systémov, pričom vyvinula usmernenia na uľahčenie bezpečnosti kódu, zabezpečenia, prenosnosti a spoľahlivosti v kontexte vstavaných systémov. Tieto pokyny sú severnou hviezdou v štandardoch, o ktoré sa musí snažiť každá spoločnosť vo svojich projektoch vstavaných systémov.

Vytvorenie a spustenie kódu, ktorý dodržiava tento zlatý štandard, si však vyžaduje inžinierov vstavaných systémov, ktorí sú si istí nástrojmi – nehovoriac o bezpečnosti.

Prečo je zvyšovanie bezpečnosti vstavaných systémov také špecifické?

Programovacie jazyky C a C++ sú podľa dnešných štandardov geriatrické, napriek tomu zostávajú široko používané. Tvoria funkčné jadro kódovej základne vstavaných systémov a Embedded C/C++ si užíva lesklý, moderný život ako súčasť sveta prepojených zariadení.

Napriek tomu, že tieto jazyky majú dosť staré korene – a vykazujú podobné správanie sa zraniteľnosti, pokiaľ ide o bežné problémy, ako sú chyby vstrekovania a pretečenie vyrovnávacej pamäte –, aby vývojári skutočne dosiahli úspech pri odstraňovaní bezpečnostných chýb vo vstavaných systémoch, musia sa oboznámiť s kódom, ktorý napodobňuje V prostredí, v ktorom pracujú. Všeobecné školenia v jazyku C týkajúce sa všeobecných bezpečnostných postupov jednoducho nebudú také účinné a nezabudnuteľné, ako keby ste venovali viac času a starostlivosti práci v kontexte Embedded C.

Keďže v modernom vozidle existuje od tucta až po viac ako sto vstavaných systémov, je nevyhnutné, aby vývojári dostali presné školenie o tom, čo majú hľadať a ako to opraviť, priamo v IDE.

Za ochranu vstavaných systémov od začiatku je zodpovedný každý

Status quo v mnohých organizáciách je taký, že rýchlosť vývoja prevyšuje bezpečnosť, aspoň pokiaľ ide o zodpovednosť vývojárov. Málokedy sa hodnotia podľa ich schopnosti vytvárať bezpečný kód, no rýchly vývoj úžasných funkcií je znakom úspechu. Dopyt po softvéri sa bude len zvyšovať, ale toto je kultúra, ktorá nás pripravila na prehratý boj so zraniteľnosťami a následnými kybernetickými útokmi, ktoré umožňujú.

Ak vývojári nie sú vyškolení, nie je to ich chyba a je to diera, ktorú musí niekto v tíme AppSec pomôcť vyplniť odporúčaním tých správnych dostupných (nehovoriac o hodnotiteľných) programoch zvyšovania zručností pre celú komunitu vývojárov. Hneď na začiatku projektu vývoja softvéru musí byť bezpečnosť prvoradým hľadiskom, pričom každý – najmä vývojári – vzhľadom na to, čo potrebuje, aby mohol hrať svoju úlohu.

Zoznámte sa s problémami zabezpečenia vstavaných systémov

Pretečenie vyrovnávacej pamäte, chyby vstrekovania a chyby obchodnej logiky sú bežné úskalia pri vývoji vstavaných systémov. Keď je pochovaný hlboko v labyrinte mikrokontrolérov v jedinom vozidle alebo zariadení, môže to znamenať katastrofu z hľadiska bezpečnosti.

Pretečenie vyrovnávacej pamäte je obzvlášť rozšírené a ak sa chcete hlboko ponoriť do toho, ako to pomohlo kompromitovať tú fritézu, o ktorej sme hovorili predtým (umožňujúce vzdialené spustenie kódu), pozrite si túto správu na CVE-2020-28592.

Teraz je čas vyskúšať si zraniteľnosť pretečenia vyrovnávacej pamäte v skutočnom vloženom kóde C/C++. Zahrajte si túto výzvu a zistite, či dokážete nájsť, identifikovať a opraviť zlé vzory kódovania, ktoré vedú k tejto zákernej chybe:

[PLAY NOW]

Ako sa ti darilo? Navštívte stránku www.securecodewarrior.com, kde nájdete presné a efektívne školenia o bezpečnosti vstavaných systémov.