Passa al contenuto
Inovasense

MISRA C

MISRA C — Linee guida di codifica per software C sicuro e affidabile in sistemi embedded e safety-critical. L'edizione 2023 supporta C11/C18.

Definizione
MISRA C — Linee guida di codifica per software C sicuro e affidabile in sistemi embedded e safety-critical. L'edizione 2023 supporta C11/C18.

MISRA C — Codifica sicura per sistemi embedded

MISRA C è un insieme di linee guida di codifica sviluppate dalla Motor Industry Software Reliability Association (MISRA) per garantire la sicurezza (safety), la sicurezza informatica (security) e l’affidabilità del codice C nei sistemi embedded. Originariamente creato per il settore automobilistico, MISRA C è oggi lo standard di fatto nell’aerospazio, nei dispositivi medici, nel controllo industriale, nel settore ferroviario e in qualsiasi ambito in cui un guasto del software abbia conseguenze sulla sicurezza.

MISRA C:2023 e MISRA C:2025

L’edizione 2023 (MISRA C:2012, terza edizione, seconda revisione) consolida MISRA C:2012 con gli Emendamenti 1–4 e i Corrigenda tecnici 1–2 in un unico documento. MISRA C:2025, un aggiornamento incrementale pubblicato a marzo 2025, è l’edizione attuale. Gli aggiornamenti principali del 2023 includono:

AggiornamentoDescrizione
Supporto C11/C18Linee guida per _Generic, _Noreturn, _Alignas, tipi atomici e thread
Regole sulla concorrenzaNuove linee guida per il multithreading e le operazioni atomiche — fondamentali per l’embedded basato su RTOS
Focus sulla sicurezzaMappature di copertura pubblicate rispetto a CERT C e ISO/IEC 17961 (una mappatura CWE è stata aggiunta con MISRA C:2025)
Documento unificatoTutti gli emendamenti e i corrigenda fusi in un’unica specifica

Classificazione delle linee guida

CategoriaSignificatoDeviazione consentita?
MandatoryDa rispettare — nessuna eccezione❌ Mai
RequiredDa rispettare salvo deviazione formale✅ Con motivazione documentata
AdvisoryBuona pratica raccomandata✅ Nessuna deviazione formale necessaria

Le linee guida sono ulteriormente classificate come Rules (definite con precisione, verificabili da tool) o Directives (più ampie, richiedono valutazione ingegneristica).

Cosa previene MISRA C

Insidie comuni del linguaggio C contro cui MISRA C offre protezione:

  • Comportamento indefinito (undefined behavior) — Overflow di interi con segno, variabili non inizializzate, dereferenziazione di puntatori null
  • Comportamento definito dall’implementazione — Ordinamento dei bit-field, segno del char, padding delle struct
  • Costrutti pericolosi — goto, setjmp/longjmp, union per il type-punning, funzioni ricorsive
  • Vulnerabilità di sicurezza — Buffer overflow, attacchi di tipo format string, troncamento di interi
  • Bug di concorrenza — Race condition sui dati, operazioni non atomiche su variabili condivise

Conformità nella pratica

AspettoApproccio
Strumenti di analisi staticaPC-lint, Polyspace, Coverity, Parasoft, LDRA, QA-C
Integrazione CI/CDVerifica MISRA automatizzata a ogni commit
Processo di deviazioneRegistro formale delle deviazioni con analisi dell’impatto sulla sicurezza
Matrice di conformitàMappatura delle regole MISRA sulle regole di progetto con tracciamento delle violazioni

MISRA C + norme di sicurezza funzionale

La conformità a MISRA C è richiamata o implicita nelle principali norme di sicurezza:

NormaAmbitoRequisito MISRA
ISO 26262AutomotiveRichiede linee guida di codifica; cita MISRA C come esempio per il C
IEC 61508IndustrialeRaccomanda un sottoinsieme C limitato
DO-178CAerospazioStandard di codifica richiesti (MISRA comunemente usato)
IEC 62304MedicaleRichiede standard di codifica documentati
EN 50716 (sostituisce la EN 50128)FerroviarioRaccomanda un sottoinsieme di linguaggio limitato

Termini correlati

  • CRA — Il Cyber Resilience Act dell’UE richiede che i prodotti siano progettati e sviluppati in modo da garantire un livello adeguato di cibersicurezza, ma non indica alcuno standard di codifica; MISRA C è uno dei modi per supportare tale obiettivo nel codice C.
  • RTOS — Le nuove linee guida sulla concorrenza di MISRA C:2023 sono essenziali per il firmware multi-thread basato su RTOS.

Tutti i nostri progetti embedded seguono le linee guida MISRA C con analisi statica automatizzata in CI/CD. Consultate i nostri servizi di Sviluppo di sistemi embedded.

Riferimenti ufficiali

Termini correlati