Logo dell'Università di Catania: Siciliae Studium Generale 1434 Logo del Centro IPPARI, Sicurezza informatica
matite e gomma
Loghi istituzionali: Siciliae Studium Generale 1434, Centro ricerche IPPARI, Università di Catania, Facoltà di Scienze Matematiche, Fisiche, Naturali, Insegnamento di Sicurezza dei sistemi informatici

Qualità di sicurezza dei programmi

Lezione 8 di Sicurezza dei sistemi informatici 1

Docente: Giuseppe Scollo

Università di Catania, sede di Comiso (RG)
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Studi in Informatica applicata, AA 2008-9

Logo di Conformità WCAG-1 di Livello Tripla A, W3C-WAI Web Content Accessibility Guidelines 1.0 Validazione XHTML 1.0 Validazione CSS 2

Indice

  1. Qualità di sicurezza dei programmi
  2. sicurezza dei programmi
  3. risoluzione degli errori
  4. difetti di sicurezza dei programmi
  5. tassonomia di difetti di programmi
  6. un caso di errore non intenzionale
  7. buffer overflow
  8. buffer overflow non intenzionale

sicurezza dei programmi

oggetto del resto del corso è la sicurezza del software, considerata:

nella lezione introduttiva, la sicurezza dei sistemi informatici è stata articolata nelle tre caratteristiche di: riservatezza, integrità, disponibilità; in pratica è necessario:

le qualità di sicurezza di un programma dipendono dalle sue funzionalità

risoluzione degli errori

tradizionalmente, si ritiene sicuro un programma quando questo non contiene errori

occorre innanzitutto distinguere fra cause ed effetti, spesso confusi nello stesso termine:

metodi tradizionali di risoluzione degli errori si basano sul collaudo di una squadra di esperti (ingl. tiger team), sfidata a tentare di penetrare nel sistema e violarne la sicurezza

purtroppo non c'è alcuna garanzia che la patch non sia fonte di altri errori!

difetti di sicurezza dei programmi

una definizione del concetto di difetto di sicurezza di un programma:

valutazione critica:

meglio assumere una specifica di requisiti di sicurezza per il programma
e quindi identificare i difetti di sicurezza con le violazioni di tali requisiti

tassonomia di difetti di programmi

tassonomia di (Landwehr et al., 1993) di difetti dei programmi:

intenzionali:

involontari:

vengono forniti nel seguito, e nella prossima lezione, alcuni esempi di difetti involontari

un caso di errore non intenzionale

ecco un esempio di errore di programmazione, sicuramente involontario, classificabile come errore logico secondo la tassonomia dei difetti vista sopra

l'errore è riscontrabile in un esempio di programmazione in C++ nel testo (Sedgewick, 2003), che a p. 41 propone due metodi simili, espressi da rispettive istruzioni C++, per il calcolo del più piccolo intero maggiore di lg N :

i due metodi non sono equivalenti

esercizio: trovare e correggere l'errore nel secondo metodo

buffer overflow

un buffer è un'area di memoria di capacità finita, ad es. quella allocata a un array o a una stringa

si ha un overflow (trabocco) dal buffer quando si accede alla struttura dati, a cui esso è allocato, con un valore dell'indice esterno all'intervallo corrispondente a locazioni del buffer

la conseguenza del buffer overflow dipende dalla collocazione della locazione di memoria a cui si tenta l'accesso erroneo, che può trovarsi nell'area:

è difficile predisporre una protezione generale dal buffer overflow, perché:

buffer overflow non intenzionale

ecco un caso di buffer overflow certamente non intenzionale, che si manifesta solo al verificarsi di una condizione molto rara, tipico esempio di race condition :

il testo (Sedgewick, 2003) propone un programma per la simulazione del lancio di monete (Programma 3.7, p. 88), dove si considerano M esperimenti, ciascuno dei quali consta di N lanci