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 — Edizione attuale

L’edizione 2023 consolida tutte le versioni precedenti (MISRA C:2012 + Emendamenti 1—4 + Corrigenda tecnici) in un’unica norma completa. Gli aggiornamenti principali includono:

AggiornamentoDescrizione
Supporto C11/C18Linee guida per _Atomic, _Static_assert, struct/union anonime
Regole sulla concorrenzaNuove linee guida per il multithreading e le operazioni atomiche — fondamentali per l’embedded basato su RTOS
Focus sulla sicurezzaMaggiore allineamento con i requisiti CWE, CERT C e CRA
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 26262AutomotiveRaccomanda MISRA C per ASIL A—D
IEC 61508IndustrialeRaccomanda un sottoinsieme C limitato
DO-178CAerospazioStandard di codifica richiesti (MISRA comunemente usato)
IEC 62304MedicaleRichiede standard di codifica documentati
EN 50128FerroviarioRaccomanda un sottoinsieme di linguaggio limitato

Termini correlati

  • CRA — Il Cyber Resilience Act dell’UE richiede pratiche di sviluppo sicuro; MISRA C fornisce il quadro di implementazione.
  • 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