Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti"

Transcript

1 Corso di Sicurezza Informatica Sicurezza del software Ing. Gianluca Caminiti

2 Software Sicuro Privo di errori (logici) che comportino un comportamento inatteso. Tali bug possono minare la sicurezza dell intero sistema creando vulnerabilità. Approccio classico penetrate and patch non soddisfacente. 2

3 Problemi delle patch L analisi è limitata alla correzione veloce del problema e non alla ricerca di problemi di progettazione. Gli effetti collaterali del problema spesso non sono visibili. Soluzioni quick & dirty introducono spesso ulteriori bug. A volte la soluzione del bug non può essere completa nel senso che pregiudica funzionalità o efficienza del sistema. 3

4 Errori tipici Errori che causano accesso non controllato ai dati. Errori che causano alterazione del flusso di esecuzione del programma. Mancanza di verifiche sui permessi di accesso alle funzioni oppure ai dati (controlli inadeguati o incompleti). Errori sulle condizioni limite (primo o ultimo caso). Altri errori logici. 4

5 Errori tipici Errori che causano accesso non controllato ai dati. Errori che causano alterazione del flusso di esecuzione del programma. Mancanza di verifiche sui permessi di accesso alle funzioni oppure ai dati (controlli inadeguati o incompleti). Errori sulle condizioni limite (primo o ultimo caso). Altri errori logici. 5

6 Buffer Overflow

7 Sommario Gestione della memoria nell invocazione di funzioni per i linguaggi ad alto livello. Richiami su call-stack (record di attivazione). Definizione di Buffer Overflow. Descrizione della tecnica che sfrutta la vulnerabilità (exploit). Tecniche per contrastare il B.O. 7

8 Call-Stack Stuttura dati organizzata a stack per gestire le chiamate a funzioni nei linguaggi ad alto livello. Ad ogni chiamata a funzione è associata la creazione di un frame sul call-stack. Ogni frame contiene sia il contesto della funzione (parametri di ingresso, variabili locali) che le informazioni (return address, frame pointer) per la gestione del frame stesso, es. per restituire il controllo alla funzione chiamante al termine di quella corrente. 8

9 Call-Stack Funzione DrawLine invocata da DrawSquare *1 Verso di crescita dello stack per ogni chiamata a funzione *2 *1 Return Address (RA1) & Saved Frame Pointer (SFP1) di DrawLine *2 Return Address (RA2) & Saved Frame Pointer (SFP2) di DrawSquare 9

10 Call-Stack Al termine di DrawLine, lo stack di DrawSquare è ripristinato (sfruttando il Saved Frame Pointer SFP1) e l esecuzione riprende dal Return Address (RA1). Top of stack Return value (if any) Stack Pointer Frame Pointer 10

11 Definizione (Stack-based) Buffer Overflow: vulnerabilità di sicurezza del codice. Causa: Un programma contiene funzioni che non verificano la dimensione dei dati in ingresso, limitandosi a copiarli in un buffer (variabile locale alla funzione) di dimensione prestabilita, confidando che l'utente non immetta più dati di quanti il buffer ne possa contenere. Scenario: Ciò può accadere se il programma sfrutta funzioni di libreria di I/O che non fanno controlli sulle dimensioni dei dati trasferiti (es. strcpy del C). 11

12 Definizione Causa: Quando (per errore o per malizia) il buffer è riempito con una quantità di dati superiore alla sua capienza Effetto: i dati extra possono sovrascrivere le strutture presenti nel record di attivazione della funzione corrente (es. le variabili locali, il return address, ecc.). Il programma può dare risultati errati o imprevedibili, bloccarsi, o (se è un driver di sistema o lo stesso sistema operativo) causare il blocco del computer. 12

13 Definizione Sfruttamento malevolo della vulnerabilità: Conoscendo bene il programma, il S.O. e l hardware su cui è eseguito, si può precalcolare una sequenza di dati che, inviata per provocare un buffer overflow, consenta di prendere il controllo del programma (e a volte, tramite questo, dell intero sistema). 13

14 Esempio di codice non sicuro #include <string.h> void foo (char *bar) { char c[12]; } memcpy(c, bar, strlen(bar)); // no bounds checking... int main (int argc, char **argv) { foo(argv[1]); } 14

15 Lo stack prima dell inserimento 15

16 Inserimento di hello 16

17 "A A A A A A A A A A A A A A A A AA A A \x08 \x35 \xc0 \x80" 17

18 Descrizione dell Exploit In presenza di un parametro di ingresso avente dimensione maggiore di 11 caratteri (byte), i dati che eccedono la dimensione della variabile sovrascrivono il frame, comprese le altre variabili locali, il SFP ed il RA. Quando foo() restituisce il controllo alla funzione chiamante, preleva il RA dal frame e prosegue l esecuzione a partire da quell indirizzo. L attaccante ha sovrascritto RA con un indirizzo arbitrario (in questo caso quello di inizio della variabile c[12]). Nel caso di un vero attacco la stringa di A sarebbe rimpiazzata da codice macchina in grado di cedere il controllo ad un programma esterno (es. una shell). 18

19 Exploit Possibili 1. Modifica di RA per dirottare il flusso del programma (di solito sul buffer stesso) al termine della funzione. 2. Modifica dei valori contenuti nelle variabili locali vicine per alterare il comportamento del programma ed ottenere effetti vantaggiosi. 3. Modifica di un puntatore a funzione o di un gestore di eccezioni. 19

20 Contromisure Linguaggio di programmazione: C e C++ non offrono metodi built-in sicuri (rispetto l accesso a dati esterni ad un array), il programmatore si deve occupare delle necessarie verifiche. Linguaggi sicuri (verificano che non si eccedano i confini dell array) sono ad es. Java,.NET ed altri. Uso di funzioni di libreria sicure (non meramente basate su strcpy e similari). Pointer protection: es. codificare gli indirizzi per nascondere i valori effettivi. Protezione contro l esecuzione: uso del bit NX ( No execute ) o anche XD ( execute Disabled ), per marcare aree di memoria in cui l esecuzione di codice è disabilitata. Address space layout randomization (ASLR). 20

21 Mediazione Incompleta Situazione in cui un provider non controlla il tipo o la quantità di dati ricevuti in input. La conseguenza è che l utente è libero di comporre input di lunghezza e tipologia arbitrari (funzionanti a meno di B.O.). Effetto: alterazione del funzionamento del servizio. Il provider non riesce a distinguere un caso di richiesta prodotta dall interfaccia del servizio da quello in cui è l utente a comporre tale richiesta. Esempio: sito web con uso di parametri passati con metodo GET. 21

22 Esempio Facciamo acquisti su Al termine degli acquisti confermiamo l ordine e si ottiene la URL seguente: qy=20&price =10&ship=boat&shipcost=5&total=205 Allora, perché non provare a modificarla? ;) qy=20&price =1&ship=boat&shipcost=5&total=25 22

23 Contromisure Limitare le scelte dell utente quando possibile. Offuscare (tramite codifica) i parametri passati. Nel caso del web: NON usare il metodo GET (ma il POST). 23

24 Errori Time-to-check to Time-to-use Si verificano quando è richiesto un certo controllo per potere svolgere una determinata azione, in presenza di problemi di sincronizzazione fra la fase di controllo e l azione corrispondente. Scenario: quando passa troppo tempo fra il momento del controllo e quello in cui tale controllo diventa significativo. 24

25 Esempio Metafora del venditore anziano Time-of-check Mio_file cambiare il carattere A in B Time-of-use Administrator s_file cancellare il file 25

26 Contromisure Fare in modo di collegare i due momenti (es. attraverso l uso di checksum per garantire che il controllo sia valido anche in momenti successivi). Time-of-check Mio_file cambiare il carattere A in B 26

27 Contromisure Fare in modo di collegare i due momenti (es. attraverso l uso di checksum per garantire che il controllo sia valido anche in momenti successivi). Time-of-check Mio_file cambiare il carattere A in B Hash H 27

28 Contromisure Fare in modo di collegare i due momenti (es. attraverso l uso di checksum per garantire che il controllo sia valido anche in momenti successivi). Time-of-use Administrator s_file cancellare il file Hash H1 28

29 Contromisure Fare in modo di collegare i due momenti (es. attraverso l uso di checksum per garantire che il controllo sia valido anche in momenti successivi). Time-of-use Administrator s_file cancellare il file Hash H1 H1!= H Verifica fallita: l operazione non è consentita!!! 29

Corso di Sicurezza Informatica

Corso di Sicurezza Informatica Corso di Sicurezza Informatica Sicurezza del Software Ing. Giuseppe D Aquì Sicurezza nell informatica Un computer sicuro è un computer spento (Kevin Mitnick) Attacchi informatici Gli attacchi informatici,

Dettagli

La protezione dai memory error exploit

La protezione dai memory error exploit Università degli Studi di Milano Sommario Introduzione 1 Stack Guard Terminator Canaries Random Canaries 2 3 Buffer Overflow Stack Guard Introduzione Buffer Overflow Condizione anomala. Memorizzazione

Dettagli

Buffer Overflow & SQL Injection

Buffer Overflow & SQL Injection Università degli Studi di Udine Dipartimento di Ingegneria Gestionale, Elettrica e Meccanica 21 Marzo 2011 Scaletta 1 2 Attacchi ai siti web Come funziona 3 4 5 Memory layout in x86 Quando, in una architettura

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 15 Martedì 24-11-2015 Struttura logica del sottosistema di I/O Processi

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli

Linguaggio C - Stringhe

Linguaggio C - Stringhe Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - Stringhe La presente dispensa e da utilizzarsi ai

Dettagli

SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR

SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR SISTEMI OPERATIVI 3 febbraio 2014 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR Cognome: Nome: Matricola: 1. Ricordate che non potete usare calcolatrici o materiale didattico,

Dettagli

Funzioni. Il modello console. Interfaccia in modalità console

Funzioni. Il modello console. Interfaccia in modalità console Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi

Dettagli

Buffer Overflow Attacchi ai servizi di rete

Buffer Overflow Attacchi ai servizi di rete Argomenti trattati Buffer Overflow Attacchi ai servizi di rete Avella Gianluigi Cerqua Pasquale Crucil Sergio D Alessandro Oreste Internet I servizi di rete Buffer Overflow: teoria, esempi Tecniche di

Dettagli

Capitolo 2 -- Silberschatz

Capitolo 2 -- Silberschatz Struttura dei Sistemi Operativi Capitolo 2 -- Silberschatz Struttura di un sistema operativo Servizi di un sistema operativo Interfaccia Utente Chiamate di sistema Tipi di chiamate Programma di sistema

Dettagli

Le stringhe. Le stringhe

Le stringhe. Le stringhe Informatica: C++ Gerboni Roberta Stringhe di caratteri (esempi di utilizzo dei vettori) Nel linguaggio C++ una stringa è semplicemente un vettore di caratteri Vettori di caratteri La stringa "hello" è

Dettagli

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 16 Martedì 3-12-2013 1 La tecnica di gestione di un dispositivo a interruzione

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

Struttura di un sistema operativo. Struttura dei Sistemi Operativi. Servizi per l utente generico. Servizi per l utente generico

Struttura di un sistema operativo. Struttura dei Sistemi Operativi. Servizi per l utente generico. Servizi per l utente generico Impossibile visualizzare l'immagine. Struttura di un sistema operativo Struttura dei Sistemi Operativi Servizi di un sistema operativo Interfaccia Utente Capitolo 2 -- Silberschatz Chiamate di sistema

Dettagli

Breve riepilogo della puntata precedente:

Breve riepilogo della puntata precedente: Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta

Dettagli

L ambiente di simulazione SPIM

L ambiente di simulazione SPIM Architettura degli Elaboratori e delle Reti Lezione 14 L ambiente di simulazione SPIM Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 14 1/28

Dettagli

PROGETTAZIONE FISICA

PROGETTAZIONE FISICA PROGETTAZIONE FISICA Memorizzazione su disco, organizzazione di file e tecniche hash 2 Introduzione La collezione di dati che costituisce una BDD deve essere fisicamente organizzata su qualche supporto

Dettagli

1. I dispositivi periferici

1. I dispositivi periferici La gestione dell I/O 1. I dispositivi periferici Un ulteriore aspetto fondamentale del SO è la gestione dei dispositivi periferici (periferiche) Dal punto di vista del sistema operativo per periferiche

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

2006-2013 maurizio pizzonia sicurezza dei sistemi informatici e delle reti. attacchi basati su buffer overflow

2006-2013 maurizio pizzonia sicurezza dei sistemi informatici e delle reti. attacchi basati su buffer overflow attacchi basati su buffer overflow buffer overflow nell'esecuzione di un programma, il momento in cui in un buffer vengono scritti più dati di quanti ne possa contenere se l'errore non viene rilevato (validazione

Dettagli

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti Corso di Sicurezza Informatica Sicurezza del software Ing. Gianluca Caminiti SQL Injection Sommario Premessa sul funzionamento dei siti dinamici SQL Injection: Overview Scenari di attacco: Errata gestione

Dettagli

Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O

Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O Sistemi Operativi (modulo di Informatica II) Sottosistema di I/O Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario L hardware di I/O Struttura Interazione tra computer e controllori

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 ISA e LINGUAGGIO ASSEMBLY MIPS ESERCIZI Massimiliano Giacomin ESERCIZIO Utilizzando la green card, tradurre in linguaggio macchina le due istruzioni in assembly

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

Dettagli

VARIABILI LOCALI E GLOBALI (ESTERNE)

VARIABILI LOCALI E GLOBALI (ESTERNE) VARIABILI LOCALI E GLOBALI (ESTERNE) Le variabili locali sono definite (ed il loro uso dichiarato) nella funzione (o nel blocco) che le usa; nascono quando la funzione entra in esecuzione e muoiono al

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Pietro Frasca Lezione 5 Martedì 21-10-2014 Thread Come abbiamo detto, un processo è composto

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

CAP. 4: Aspetti generali del Sistema Operativo Linux. l http://home.dei.polimi.it/silvano/acso.htm

CAP. 4: Aspetti generali del Sistema Operativo Linux. l http://home.dei.polimi.it/silvano/acso.htm Struttura interna del sistema Operativo Linux CAP. 4: Aspetti generali del Sistema Operativo Linux CAP. 5: Funzionalità del calcolatore l http://home.dei.polimi.it/silvano/acso.htm Funzionalità del Sistema

Dettagli

Informatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione

Informatica 3. Informatica 3. LEZIONE 6: Il controllo dell esecuzione. Lezione 6 - Modulo 1. Errori durante l esecuzione. Il controllo dell esecuzione Informatica 3 Informatica 3 LEZIONE 6: Il controllo dell esecuzione Modulo 1: La gestione delle eccezioni Modulo 2: Programmazione concorrente Lezione 6 - Modulo 1 La gestione delle eccezioni Politecnico

Dettagli

CAP. 6: Nucleo del sistema operativo (La gestione dei processi)

CAP. 6: Nucleo del sistema operativo (La gestione dei processi) Struttura interna del sistema operativo Linux CAP. 6: Nucleo del sistema operativo (La gestione dei processi) Architettura del sistema operativo shell Programmi utente Modo utente Interfaccia delle chiamate

Dettagli

Linguaggio C - Funzioni

Linguaggio C - Funzioni Linguaggio C - Funzioni Funzioni: Il linguaggio C è di tipo procedurale; ogni programma viene suddiviso in sottoprogrammi, ognuno dei quali svolge un determinato compito. I sottoprogrammi si usano anche

Dettagli

Parte II.2 Elaboratore

Parte II.2 Elaboratore Parte II.2 Elaboratore Elisabetta Ronchieri Università di Ferrara Dipartimento di Economia e Management Insegnamento di Informatica Dicembre 1, 2015 Elisabetta Elisabetta Ronchieri II Software Argomenti

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

Architettura di un sistema di calcolo

Architettura di un sistema di calcolo Richiami sulla struttura dei sistemi di calcolo Gestione delle Interruzioni Gestione della comunicazione fra processore e dispositivi periferici Gerarchia di memoria Protezione. 2.1 Architettura di un

Dettagli

Processi UNIX. I Processi nel SO UNIX. Gerarchie di processi UNIX. Modello di processo in UNIX

Processi UNIX. I Processi nel SO UNIX. Gerarchie di processi UNIX. Modello di processo in UNIX Processi UNIX I Processi nel SO UNIX UNIX è un sistema operativo multiprogrammato a divisione di tempo: unità di computazione è il processo Caratteristiche del processo UNIX: processo pesante con codice

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

strutturare dati e codice

strutturare dati e codice Puntatori e passaggio parametri strutturare dati e codice Tipo di dati int * Pi ; Op. dereferenziazione j = *Pi ; Op. indirizzo Pi = &i ; By value int f(int i) ; a = f(b) ; By address int f(int * Pi) ;

Dettagli

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 Programmazione I / Informatica generale Prova scritta 11 Giugno 2008 NOTA: Si trascuri ogni problema legato al tipo ed al valore di ritorno della funzione main. Inoltre, nei programmi è da sottintendere

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

BOLLETTINO DI SICUREZZA INFORMATICA

BOLLETTINO DI SICUREZZA INFORMATICA STATO MAGGIORE DELLA DIFESA II Reparto Informazioni e Sicurezza Ufficio Sicurezza Difesa Sezione Gestione del Rischio CERT Difesa CC BOLLETTINO DI SICUREZZA INFORMATICA N. 1/2009 Il bollettino può essere

Dettagli

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia) ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia) Scrivere una funzione per definire se un numero è primo e un programma principale minimale che ne testa la funzionalità. #include

Dettagli

Cognome: Nome: Matricola: Sicurezza dei sistemi informatici e delle reti 19 luglio 2007. Usa questa pagina per la brutta, staccala, non consegnarla.

Cognome: Nome: Matricola: Sicurezza dei sistemi informatici e delle reti 19 luglio 2007. Usa questa pagina per la brutta, staccala, non consegnarla. Usa questa pagina per la brutta, staccala, non consegnarla. Tempo a disposizione: 90 minuti. Libri e appunti chiusi. Vietato comunicare con chiunque. Vietato l'uso di cellulari, calcolatrici, palmari

Dettagli

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione Il sistema di I/O Hardware di I/O Interfacce di I/O Software di I/O Introduzione 1 Sotto-sistema di I/O Insieme di metodi per controllare i dispositivi di I/O Obiettivo: Fornire ai processi utente un interfaccia

Dettagli

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

20 - Input/Output su File

20 - Input/Output su File 20 - Input/Output su File Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario Lezione 2 Principi Fondamentali di SO Interrupt e Caching Sommario Operazioni di un SO: principi fondamentali Una visione schematica di un calcolatore Interazione tra SO, Computer e Programmi Utente 1

Dettagli

Le Stringhe. Un introduzione operativa. Luigi Palopoli

Le Stringhe. Un introduzione operativa. Luigi Palopoli Le Stringhe p.1/19 Le Stringhe Un introduzione operativa Luigi Palopoli ReTiS Lab - Scuola Superiore S. Anna Viale Rinaldo Piaggio 34 Pontedera - Pisa Tel. 050-883444 Email: palopoli@sssup.it URL: http://feanor.sssup.it/

Dettagli

ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE

ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE ARCHITETTURA DI UN SISTEMA A MICROPROCESSORE 1. INTRODUZIONE In questo capitolo viene presentata la struttura, sia interna che esterna, di un microprocessore generico riprendendo i concetti esposti nella

Dettagli

puntatori Lab. Calc. AA 2007/08 1

puntatori Lab. Calc. AA 2007/08 1 puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene

Dettagli

Input / Output attraverso stream. I/O in C vs. I/O in C++

Input / Output attraverso stream. I/O in C vs. I/O in C++ Alessio Bechini - Corso di - Input / Output attraverso stream (anno accademico 2002-2003) Utilizzo di stream per I/O I/O in C vs. I/O in C++ La libreria C standard per l I/O viene acceduta con stdio.h

Dettagli

Processi e Sincronizzazione. Laboratorio Software 2008-2009 C. Brandolese M. Grotto

Processi e Sincronizzazione. Laboratorio Software 2008-2009 C. Brandolese M. Grotto Processi e Sincronizzazione C. Brandolese M. Grotto Sommario 1. Processi Concetti fondamentali Stati in GNU/Linux 2. Creazione Descrizione Creazione con system() Creazione con fork() Effetto di fork()

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

Sistemi Operativi. Des crizione e controllo dei proces s i

Sistemi Operativi. Des crizione e controllo dei proces s i Sistemi Operativi Des crizione e controllo dei proces s i Servizi di un Sistema Operativo Permettere ad un utente di creare processi (lanciare programmi) Interallacciare l esecuzione di diversi processi,

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 28 Febbraio 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int min = 3; int i; Scrivere la porzione di codice

Dettagli

2006-2011 maurizio pizzonia sicurezza dei sistemi informatici e delle reti. esercizi su vulnerabilità del software e delle reti

2006-2011 maurizio pizzonia sicurezza dei sistemi informatici e delle reti. esercizi su vulnerabilità del software e delle reti esercizi su vulnerabilità del software e delle reti 1 input fidato e non per quali dei seguenti software una vulnerabilità rappresenta una minaccia? in quali condizioni? apache: server web il kernel linux

Dettagli

HARDWARE. Relazione di Informatica

HARDWARE. Relazione di Informatica Michele Venditti 2 D 05/12/11 Relazione di Informatica HARDWARE Con Hardware s intende l insieme delle parti solide o ( materiali ) del computer, per esempio : monitor, tastiera, mouse, scheda madre. -

Dettagli

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++ ISTITUTO TECNICO INDUSTRIALE STATALE G A L I L E O F E R R A R I S DIISPENSA DII IINFORMATIICA E SIISTEMII AUTOMATIICII LA GESTIONE DEI FILE DI TESTO IN C++ Le classi per la gestione dei file. Il C++ è

Dettagli

Architetture dei Calcolatori (Lettere. Installazione di SPIM. Interfaccia Grafica

Architetture dei Calcolatori (Lettere. Installazione di SPIM. Interfaccia Grafica SPIM Architetture dei Calcolatori (Lettere A-I) SPIM Ing.. Francesco Lo Presti Simulatore che esegue programmi assembler per architetture RISC MIPS R2000/R3000 Legge programmi in assembler MIPS e li traduce

Dettagli

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL STRUTTURA DEI SISTEMI OPERATIVI 3.1 Struttura dei Componenti Servizi di un sistema operativo System Call Programmi di sistema Struttura del sistema operativo Macchine virtuali Progettazione e Realizzazione

Dettagli

Il simulatore SPIM SPIM

Il simulatore SPIM SPIM Il simulatore SPIM Architetture dei Calcolatori (lettere A-I) SPIM SPIM: un simulatore per eseguire programmi assembler scritti per processori MIPS32 Download e materiale relativo alla pagina Web http://www.cs.wisc.edu/~larus/spim.html

Dettagli

Protezione. Sistemi Operativi mod. B 16.1

Protezione. Sistemi Operativi mod. B 16.1 Protezione Scopi della Protezione Dominio di Protezione Matrice d Accesso Implementazione della Matrice d Accesso Revoca dei Diritti d Accesso Sistemi Basati su Abilitazioni Protezione basata sul linguaggio

Dettagli

File e indici. Tecnologia delle BD: perché studiarla? Le basi di dati sono grandi e persistenti. DataBase Management System DBMS

File e indici. Tecnologia delle BD: perché studiarla? Le basi di dati sono grandi e persistenti. DataBase Management System DBMS 1 Tecnologia delle BD: perché studiarla? File e indici I DBMS offrono i loro servizi in modo "trasparente": per questo abbiamo potuto finora ignorare molti aspetti realizzativi abbiamo considerato il DBMS

Dettagli

memoria virtuale protezione

memoria virtuale protezione Memoria Virtuale Le memorie cache forniscono un accesso veloce ai blocchi di memoria usati più di recente La memoria virtuale fornisce un accesso veloce ai dati sulle memorie di massa usati più di recente.

Dettagli

Le operazioni di allocazione e deallocazione sono a carico del sistema.

Le operazioni di allocazione e deallocazione sono a carico del sistema. Allocazione della memoria In C++ è possibile creare (allocare) variabili in maniera statica o dinamica. Nell allocazione statica una variabile esiste ed è utilizzabile dal momento della sua dichiarazione

Dettagli

Architettura del calcolatore

Architettura del calcolatore Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macro-componenti: Hardware Software Architettura del calcolatore L architettura dell hardware di un calcolatore reale

Dettagli

Homework HWC1 di Programmazione Concorrente 13 novembre 2014 anno accademico 2014/2015

Homework HWC1 di Programmazione Concorrente 13 novembre 2014 anno accademico 2014/2015 Homework HWC1 di Programmazione Concorrente 13 novembre 2014 anno accademico 2014/2015 Modalità di consegna L homework va consegnato entro le ore 20:00 di domenica, trenta di novembre, inviando al docente

Dettagli

Gestione dei File. dischi nastri cd

Gestione dei File. dischi nastri cd Gestione dei File Per mantenere disponibili i dati tra le diverse esecuzioni di un programma, questi si devono archiviare in file su memoria di massa (dati persistenti): dischi nastri cd Un file è un astrazione

Dettagli

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi formativi Introdurre i principi del funzionamento di un elaboratore e della programmazione. Presentare gli approcci elementari alla soluzione di problemi (algoritmi)e al progetto di strutture

Dettagli

Informatica Medica C++ Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa. Sviluppo di un applicazione eseguibile

Informatica Medica C++ Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa. Sviluppo di un applicazione eseguibile Corso di Laurea in Ingegneria Biomedica Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa Prof. Fabio Solari: fabio.solari@unige.it (010-3532059) Prof. Manuela Chessa: manuela.chessa@unige.it

Dettagli

Fondamenti di Informatica - 9Cfu Corso di Laurea in Ingegneria Informatica (ord. 270)

Fondamenti di Informatica - 9Cfu Corso di Laurea in Ingegneria Informatica (ord. 270) Corsi di Laurea Ingegneria Informatica Ord. 270 A.A. 2012-2013 Prof. Vincenza Carchiolo vincenza.carchiolo@dieei.unict.it Fondamenti di Informatica - 9Cfu Corso di Laurea in Ingegneria Informatica (ord.

Dettagli

Gestione dei processi

Gestione dei processi Gestione dei processi Dormire unsigned int sleep(unsigned int); Attende un numero specificato di secondi a meno che non si verifichi un segnale Restituisce 0 se l'attesa è terminata senza interruzioni,

Dettagli

SISTEMI OPERATIVI 14 settembre 2015 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR

SISTEMI OPERATIVI 14 settembre 2015 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR SISTEMI OPERATIVI 14 settembre 2015 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR Cognome: Nome: Matricola: 1. Ricordate che non potete usare calcolatrici o materiale

Dettagli

Processi in Linux. Igino Corona igino.corona@diee.unica.it. 20 Ottobre 2009

Processi in Linux. Igino Corona igino.corona@diee.unica.it. 20 Ottobre 2009 Sistemi Operativi Processi in Linux Igino Corona igino.corona@diee.unica.it 20 Ottobre 2009 Contenuti della lezione Come funzionano i programmi in Linux? Schema base di esecuzione di un programma Modalità

Dettagli

CREAZIONE PROCESSI IN UNIX 20

CREAZIONE PROCESSI IN UNIX 20 CREAZIONE PROCESSI IN UNIX 20 STRUTTURE DATI PER PROCESSI Un processo puo' essere in escuzione in 2 modi: kernel e utente. Un processo ha almeno 3 regioni: codice, dati e stack Lo stack è allocato dinamicamente.

Dettagli

dall argomento argomento della malloc()

dall argomento argomento della malloc() Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È

Dettagli

Protezione del Software

Protezione del Software Protezione dalla copia Protezione del Software Alfredo De Santis! Aprile 0! Trovare un metodo contro la pirateria efficiente economico resistente contro i pirati esperti non invasivo Compito impossibile!

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

Dettagli

Colloquio di informatica (5 crediti)

Colloquio di informatica (5 crediti) Università degli studi della Tuscia Dipartimento di Scienze Ecologiche e Biologiche Corso di laurea in Scienze Ambientali A.A. 2013-2014 - II semestre Colloquio di informatica (5 crediti) Prof. Pier Giorgio

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Architettura di un calcolatore: introduzione

Architettura di un calcolatore: introduzione Corso di Calcolatori Elettronici I Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle Tecnologie

Dettagli

Sistema Operativo e Applicativi

Sistema Operativo e Applicativi Sistema Operativo e Applicativi Modulo di Informatica Dott.sa Sara Zuppiroli A.A. 2012-2013 Modulo di Informatica () Software A.A. 2012-2013 1 / 36 Software Conosciamo due classi di software: Programmi

Dettagli

Indice. Materiale di riferimento. Struttura di un programma in C++ Introduzione al C++ (CAP 1) Alberto Garfagnini e Marco Mazzocco A.A.

Indice. Materiale di riferimento. Struttura di un programma in C++ Introduzione al C++ (CAP 1) Alberto Garfagnini e Marco Mazzocco A.A. Introduzione al C++ (CAP 1) Alberto Garfagnini e Marco Mazzocco Università degli studi di Padova A.A. 2014/2015 Indice Scrittura del primo programma in C++ elementi costitutivi del programma compilazione

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori

Dettagli

Le virtual machine e la memoria virtuale

Le virtual machine e la memoria virtuale Le virtual machine e la memoria virtuale Prof. Alberto Borghese Dipartimento di Scienze dell Informazione alberto.borghese@unimi.it Università degli Studi di Milano Riferimento Patterson 5: 5.6, 5.7. 1/29

Dettagli

Architettura degli elaboratori (A)

Architettura degli elaboratori (A) Laurea in Informatica a.a. 2010-2011 Laboratorio del corso di Architettura degli elaboratori (A) Modulo 1: l Architettura dell 8086 Valeria Carofiglio Linguaggi a vari livelli e loro relazioni Programma

Dettagli

Il processore - CPU (CENTRAL PROCESSING UNIT)

Il processore - CPU (CENTRAL PROCESSING UNIT) Il processore - CPU (CENTRAL PROCESSING UNIT) Funzionamento Programmi e dati risiedono in file memorizzati in memoria secondaria. Per essere eseguiti (i programmi) e usati (i dati) vengono copiati nella

Dettagli

Strumenti per l Analisi Statica e Dinamica di Eseguibili

Strumenti per l Analisi Statica e Dinamica di Eseguibili Pattern Recognition and Applications Lab Strumenti per l Analisi Statica e Dinamica di Eseguibili Dott. Ing. Davide Maiorca davide.maiorca@diee.unica.it Corso di Sicurezza Informatica A.A. 2014/2015 Dipartimento

Dettagli

Esercizi. Assembly. Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014

Esercizi. Assembly. Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 Esercizi Assembly Alessandro A. Nacci alessandro.nacci@polimi.it ACSO 2014/2014 1 RIPASSO Architettura dei registri del 68K Di (0 i 7): registri di dato a 8, 16, 32 bit Ai (0 i 7): resgistri di a 16, 32

Dettagli

(1) - - (4) R4 = R7 * R7 (4) (2) (3) 5 - (4) rinviata perché in WAW con (3) 6 (3) e (4) ritirabili ma attendono il completamento di (2) (2) (3) (4)

(1) - - (4) R4 = R7 * R7 (4) (2) (3) 5 - (4) rinviata perché in WAW con (3) 6 (3) e (4) ritirabili ma attendono il completamento di (2) (2) (3) (4) Esercizio 1 (20%) Si assuma di avere una macchina con 10 registri ufficiali (da R0 a R9) e sufficienti registri segreti in grado di avviare 2 istruzioni per ciclo di clock. Tale macchina richiede 2 cicli

Dettagli

Informatica e Bioinformatica: Sistemi Operativi

Informatica e Bioinformatica: Sistemi Operativi Informatica e Bioinformatica: Sistemi Operativi 11 marzo 2013 Macchina Hardware/Software Sistema Operativo Macchina Hardware La macchina hardware corrisponde alle componenti fisiche del calcolatore (quelle

Dettagli

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER L architettura CLIENT SERVER è l architettura standard dei sistemi di rete, dove i computer detti SERVER forniscono servizi, e computer detti CLIENT, richiedono

Dettagli

Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18

Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18 Corso di Calcolatori Elettronici I A.A. 2010-2011 Il processore Lezione 18 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Calcolatore: sottosistemi Processore o CPU (Central Processing

Dettagli

Indice. settembre 2008 Il File System 2

Indice. settembre 2008 Il File System 2 Il File System Indice 4. Il File System 5. Vantaggi del FS 6. Protezione 7. Condivisione 8. I file - 1 9. I file - 2 10. Attributi dei file 11. Directory 12. Livelli di astrazione - 1 13. Livelli di astrazione

Dettagli