Prejsť na obsah
Inovasense

MISRA C

MISRA C — Smernice pre programovanie bezpečného a spoľahlivého softvéru v jazyku C v embedded a bezpečnostne kritických systémoch. Vydanie 2023 podporuje C11/C18.

Definícia
MISRA C — Smernice pre programovanie bezpečného a spoľahlivého softvéru v jazyku C v embedded a bezpečnostne kritických systémoch. Vydanie 2023 podporuje C11/C18.

MISRA C — bezpečné programovanie pre embedded systémy

MISRA C je súbor smerníc pre programovanie, ktorý vypracovalo združenie Motor Industry Software Reliability Association (MISRA) s cieľom zaistiť bezpečnosť (safety), zabezpečenie (security) a spoľahlivosť kódu v jazyku C v embedded systémoch. MISRA C pôvodne vznikol pre automobilový priemysel a dnes je de facto štandardom v leteckom a kozmickom priemysle, pri zdravotníckych pomôckach, v priemyselnom riadení, v železničnej doprave a v každej oblasti, kde má zlyhanie softvéru dôsledky pre bezpečnosť alebo zabezpečenie.

MISRA C:2023 a MISRA C:2025

Vydanie 2023 (MISRA C:2012, tretie vydanie, druhá revízia) konsoliduje MISRA C:2012 s dodatkami 1–4 a technickými korigendami 1–2 do jedného dokumentu. Aktuálnym vydaním je MISRA C:2025, inkrementálna aktualizácia vydaná v marci 2025. Medzi kľúčové aktualizácie vydania 2023 patria:

AktualizáciaOpis
Podpora C11/C18Smernice pre _Generic, _Noreturn, _Alignas, atomické typy a vlákna
Pravidlá pre súbežnosťNové smernice pre viacvláknové spracovanie a atomické operácie — kľúčové pre embedded systémy založené na RTOS
Dôraz na zabezpečenie (security)Zverejnené mapovania pokrytia voči CERT C a ISO/IEC 17961 (mapovanie na CWE pribudlo s MISRA C:2025)
Jednotný dokumentVšetky dodatky a korigendá zlúčené do jednej špecifikácie

Klasifikácia smerníc

KategóriaVýznamJe povolená odchýlka?
Mandatory (povinná)Musí sa dodržať — bez výnimiek❌ Nikdy
Required (vyžadovaná)Musí sa dodržať, ak sa neuplatní formálna odchýlka✅ So zdokumentovaným zdôvodnením
Advisory (odporúčaná)Odporúčaná osvedčená prax✅ Formálna odchýlka nie je potrebná

Smernice sa ďalej klasifikujú ako pravidlá (Rules: presne definované, overiteľné nástrojmi) alebo direktívy (Directives: širšie, vyžadujú inžiniersky úsudok).

Čomu MISRA C predchádza

Bežné úskalia jazyka C, pred ktorými MISRA C chráni:

  • Nedefinované správanie — Pretečenie celých čísel so znamienkom, neinicializované premenné, dereferencia nulového ukazovateľa
  • Správanie definované implementáciou — Poradie bitových polí, znamienkovosť typu char, výplň štruktúr (padding)
  • Nebezpečné konštrukcie — goto, setjmp/longjmp, zjednotenia (union) použité na reinterpretáciu typov (type punning), rekurzívne funkcie
  • Bezpečnostné zraniteľnosti — Pretečenie vyrovnávacej pamäte, útoky cez formátovacie reťazce, orezanie celočíselných hodnôt
  • Chyby súbežnosti — Dátové súbehy (data races), neatomické operácie nad zdieľanými premennými

Súlad v praxi

HľadiskoPrístup
Nástroje statickej analýzyPC-lint, Polyspace, Coverity, Parasoft, LDRA, QA-C
Integrácia do CI/CDAutomatizovaná kontrola MISRA pri každom commite
Proces odchýlokFormálny záznam o odchýlke s analýzou vplyvu na bezpečnosť
Matica súladuMapovanie pravidiel MISRA na projektové pravidlá so sledovaním porušení

MISRA C + normy funkčnej bezpečnosti

Na súlad s MISRA C sa odvolávajú alebo ho implicitne predpokladajú hlavné bezpečnostné normy:

NormaOblasťPožiadavka na MISRA
ISO 26262Automobilový priemyselVyžaduje smernice pre programovanie; MISRA C uvádza ako príklad pre jazyk C
IEC 61508PriemyselOdporúča obmedzenú podmnožinu jazyka C
DO-178CLetecký a kozmický priemyselVyžadujú sa štandardy programovania (bežne sa používa MISRA)
IEC 62304ZdravotníctvoVyžaduje zdokumentované štandardy programovania
EN 50716 (nahrádza EN 50128)ŽelezniceOdporúča obmedzenú podmnožinu jazyka

Súvisiace pojmy

  • CRA — Nariadenie EÚ Cyber Resilience Act vyžaduje, aby boli výrobky navrhnuté a vyvinuté tak, aby zaisťovali primeranú úroveň kybernetickej bezpečnosti, nemenuje však žiadny štandard programovania; MISRA C je jedným zo spôsobov, ako to pri kóde v jazyku C podporiť.
  • RTOS — Nové smernice MISRA C:2023 pre súbežnosť sú nevyhnutné pre viacvláknový firmvér založený na RTOS.

Všetky naše embedded projekty dodržiavajú smernice MISRA C s automatizovanou statickou analýzou v CI/CD. Pozrite si naše služby vývoja embedded systémov.

Oficiálne referencie

Súvisiace pojmy