Table of Contents Table of Contents
Previous Page  83 / 92 Next Page
Information
Show Menu
Previous Page 83 / 92 Next Page
Page Background

83

EMBEDDED

66 • NOVEMBRE • 2017

SAFETY SECURITY |

SOFTWARE

[xšU

À

strategia. Tali strumenti eseguono approfondite

analisi del codice software per prevenire, rilevare

ed eliminare i difetti e applicare automaticamente

À

standard.

[

"

À

-

ta manutenibilità del software e quindi della ridu-

zione dei costi complessivi di sviluppo.

7

À

+

_&

critical ottimizzando al contempo anche la sicurez-

ˆ

richiedono un insieme di strategie, processi, stru-

menti e competenze che possono non sovrapporsi

Á

-

menti di analisi automatizzata del codice sono un

À

À

possono portare a problemi e a vulnerabilità sia

della sicurezza sia della protezione, come parte di

un approccio olistico.

Tabella 1 – Un rapido confronto tra MISRA e CERT C

MISRA C:2012

CERT C

Analisi

Restrizioni (gruppo di lavoro)

Aperto e pubblico (web)

Struttura

143 Rules / 16 Directives

Le Rules sono linee guida per le quali è stata fornita una

descrizione completa dei requisiti.

Le Directives sono linee guida per le quali non è possibile fornire

la completa descrizione necesaria per eseguire una verifica

della conformità.

98 Rules / 178 Recommendations

Le Rules sono definite in base a tre criteri:

1. La violazione delle linee guida è probabile diventi un difetto

della sicurezza.

2. Non si basano su annotazioni al codice sorgente o su ipotesi

di intenti del programmatore.

3. La conformità alle linee guida può essere determinata

mediante analisi automatica, metodi formali, o ispezione

manuale.

Le Recommendations sono definite in base a due criteri:

1. La loro applicazione è verosimile che migliori la sicurezza,

l’affidabilità o la protezione dei sistemi software.

2. Uno o più dei requisiti da indicare come Rule non possono

essere soddisfatte.

Applicazione

La formulazione delle Rules è orientata verso una applicazione

automatizzata.

Es.: Rule 8.14 “i Qualifier riservati non dovranno essere utilizzati”

La formulazione delle Rules è appena più generica.

Es.: EXP43-C: “Nell’utilizzare i puntatori restrict-qualified vanno

evitati i comportamenti non definiti”

Organizzazione

Per settori di linguaggio e ambiente:

“The Implementation”, “Compilation and build”, “Requirements

traceability”, “Code design”, “A standard C environment”,

“Unused code”, “Comments”, “Character sets and lexical

conventions”, “Identifiers”, “Types”, “Literals and constants”,

“Declarations and definitions”, “Initialization”, “The essential

type model”, “Pointer type conversions”, “Expressions”, “Side

effects”, “Control statement expressions”, “Control flow”, “Switch

statement”, “Functions”, “Pointers and arrays”, “Overlapping

storage”, “Preprocessing directives”, “Standard libraries” and

“Resources”.

Per elementi di linguaggio di basso livello:

“Preprocessor (PRE)”, “Declarations and initialization (DCL)”,

“Expressions (EXP)”, “Integers (INT)”, “Floating Point (FLP)”,

“Arrays (ARR)”, “Characters and strings (STR)”, “Memory

management (MEM)”, “Input/Output (FIO)”, “Environment (ENV)”,

“Signals (SIG)”, “Error handling (ERR)”, “Application Programming

Interfaces (API)”, “Concurrency (CON)”, “Miscellaneous (MSC)”,

“POSIX (POS)”, “Microsoft Windows (WIN)”.

Severity

classification

Liberamente collegato alle proprietà di “Category” della Rule:

• Mandatory (nessuna deroga ammessa)

• Required (deroghe consentite)

• Advisory (processi di deroga formale non richiesti)

Approccio basato sulla valutazione dei rischi. Ogni linea guida ha

una priority come prodotto di severity, likelihood e remediation

cost (ciascuno di essi con un valore in una scala da 1 a 3).

La gamma di priorità definisce il legame con uno dei tre livelli

possibili:

L1 -> Priorities 12, 18, 27 (elevata severità)

L2 -> Priorities 6, 8, 9

L3 -> Priorities 1, 2, 3, 4 (bassa severità)

Procedura

di deroga

Formalizzato: richiede l’indicazione della linea guida da cui si

è derogato, le circostanze in cui è consentita la deroga, la

motivazione della deroga, una valutazione del rischio derivante

(dimostrazione di come la sicurezza è ugualmente assicurata,

ulteriori prove richieste ecc.) ed è necessaria una approvazione

formale.

Limitata: è possibile derogare solo da Rules di tipo Advisory e

Required.

Non c’è alcuna descrizione di un formale processo di gestione

per le deroghe, anche se sono menzionati come un modo per

sopprimere i veri e veri-positivi dimostratamente innocui o che

sono in accadimento sulle scelte architetturali non previste dallo

standard.