Programmazione Avanzata
2° semestre
A.A. 2009-2010
Corso offerto per
l'ultima volta
PAGINA AGGIORNATA PERIODICAMENTE
Docente
: Francesco Parisi-Presicce
Studio
: Via Salaria 113, terzo piano,
stanza 345a
telefono
06 4991 8514
Email: parisi (AT) di
(DOT) uniroma1 (DOT) it
(inserire nel Subject AdvProgr)
Orario ricevimento studenti: martedì e
giovedì 16:30 - 18:00
(fino al 13 giugno 2010) e
per
Appuntamento
AVVISI
- Attenzione:
L'appello invernale per questo corso sarà fissato su richesta di
studenti, che deve pervenire (per email)
al docente entro il 5 febbraio 2011
- Per poter sostenere l'esame, è indispensabile aver consegnato la
relazione sul progetto con una settimana di anticipo
- Il Primo appello d'esame di lunedì
28 giugno è posticipato a dopo il 5 luglio
Secondo appello d'esame lunedì
19 luglio
Prenotarsti tramite infostud
- Presentazione dei progetti martedì 15 e di giovedì
17 giugno durante e dopo le ore di lezione
- Le lezioni di giovedì 20 e di giovedì
27 maggio sono prolungate fino alle ore 17:30
- Per recuperare alcune lezioni perse per missione del
docente, un paio delle lezioni di giovedì nel mese di maggio
saranno prolungate fino alla disponibilità dell'aula stessa.
Dettagli saranno resi
noti appena possibile.
Le lezioni della settimana dal 12 al 17 aprile saranno recuperate nella
settimana del 14 giugno.
- L'elaborazione del Secondo
assegnamento va consegnata, anche per email (in formato pdf), entro
martedì 18 maggio
- L'elaborazione del Primo
assegnamento va consegnata, anche per email (in formato pdf), entro
martedì 4 maggio
- Le proposte di progetto (circa una pagina) vanno presentate
entro giovedì 29 aprile, anche in forma telematica
- Le lezioni della settimana dal 19 al 23 Aprile sono
soppresse per il convegno DIDAMATICA 2010 che si terrà presso la
sede del Dipartimento di Informatica in Via Salaria
- Gli studenti che intendono seguire questo corso sono invitati a
spedire al docente un indirizzo di email tramite il quale possano
essere contattati per lezioni, risorse, assegnamenti, progetto, ecc.
DESCRIPTION
Theory and practice
of software security, focusing in particular on some common software
security
risks, including buffer overflows, race conditions and random number
generation, and on the identification of potential threats and
vulnerabilities
early in the design cycle. The emphasis is on methodologies and tools
for
identifying and eliminating security vulnerabilities, techniques to
prove the
absence of vulnerabilities, and ways to avoid security holes in new
software,
and on essential guidelines for building secure software: how to design
software with security in mind from the ground up and to integrate
analysis and
risk management throughout the software life cycle.
MODALITÀ
D'ESAME
L'esame consiste in una prova orale, la risoluzione di alcuni problemi
assegnati periodicamente durante il corso dal docente, e la
presentazione a lezione e discussione
di un progetto concordato con il
docente. Il progetto può essere sviluppato in gruppi di uno o
due studenti e può riguardare sia aspetti teorici che aspetti
pratici della sicurezza nelle applicazioni.
La consegna delle soluzioni dei problemi e la prova orale sono
individuali.
Se ci sono significativi indizi che portano a credere che il
progetto o le soluzioni consegnati siano stati copiati in tutto o
in parte, il progetto o le soluzioni
è/sono considerati nulli.
DIARIO
delle LEZIONI
(in continuo
aggiornamento)
- 9/11 marzo
Introduzione al corso.
Sicurezza
come ... .
Vulnerabilità e attacchi. Rischi e
valutazione. Scelte tecnologiche.
- 16/18 marzo
Principi di progettazione 'sicura'
Analisi del codice e testing.
- 23/25 marzo
Buffer Overflow : cause e
rimedi.
Difese contro Buffer
Overflow
- 30 marzo
Lezione soppressa per ordine del Rettore
- 8 aprile
Lezione rinviata per missione del docente
- 13/15 aprile
Lezioni rinviate per missione del docente
Elaborazione proposte di progetto
- 20/22 aprile
Lezioni soppresse per concomitanza convegno DIDAMATICA 2010
- 27/29 aprile
Problemi di formattazione
di stringhe.
- T. Newsham, Format String
Attacks ,
Guardent Inc. 2000
- Secure
Coding in C++ : Integers,
Software Engineering Institute, CMU
- Secure Coding in C++
: Strings,
Software Engineering Institute, CMU
Problemi di Inserimento di Codice
Attacchi basati su SQL
Injections
- 4/6 maggio
Consegna elaborato HW1
TOCTOU e le Race Conditions e
come evitarle con RaceGuard .
Problemi di file /temp e Randomizzazione
- 11/13 maggio
Attività didattica del 13/5 soppressa per Incontro con le
aziende
Cross-site Scripting
Cenni di Reverse
Engineering.
- 18/20 maggio
Consegna elaborato HW2
Code Obfuscation:
semplici
esempi e risultati di impossibilità.
(giovedì 20 lezione doppia)
- 25/27 maggio
Evoluzione del modello di sicurezza di Java
Piattaforma di Sicurezza di Java2
(giovedì 27 lezione doppia)
- 1/3 giugno
Information Flow. JFlow.
Static label
checking. Lucidi-Myers
Sito del progetto JIF
- A.Myers and B.Liskov, A Decentralized Model for
Information Flow Control qui
(SOSP 1997).
- Andrew C. Myers and Barbara Liskov, Protecting privacy
using the decentralized label model ACM Transactions on Software
Engineering and Methodology, 9(4): 410–442, October 2000. QUI
- 8/10 giugno
Lezioni rinviate per impegni istituzionali del docente
- 15/17 giugno
Presentazione dei progetti da parte degli studenti
- [martedì 15] 14:30-17:30
- Analisi delle vulnerabilità di sicurezza di
IRSSI - Sima Sotiraq
- Sviluppo di un Desktop Manager per Microsoft Windows
- Alberto La Rocca
- [giovedì 17] 14:30-17:30
- Analisi della libreria libpurple e
dell'applicazione di IM Pidgin - Giuseppe Crisafulli
- Analisi di QuickerSite CMS 1.8.4 - Daniele
Spaccini
TOOLS
ARTICOLI
- Chris Steel, Ramesh Nagappan, Ray Lai, Core Security
Patterns, Ch3,
SUN
- JATAC, DACS, Software Security Assurance:
State of
the
Art Report ,
July 31, 2007
- A
Taxonomy of Computer Program Security Flaws, by C.E.Landwehr
et
al.
- TOP 25 Most Dangerous Programming Errors , SANS
Institute
2009
- J.Viega,
G.McGraw, Secure Programming Cookbook,
O'Reilly capitolo
su numeri
random
REFERENCES
- R.Anderson, Security Engineering: a guide to
building
dependable distributed systems , 2nd ed., John Wiley
and Sons 2008
Prima edizione disponibile QUI
- J.Viega,
G.McGraw, Building Secure Software,
Addison-Wesley 2002
book web page
http://www.buildingsecuresoftware.com/
sample
chapters
- G.Hoglung, G.McGraw, Exploiting Software: how to
break code ,
Addison-Wesley 2004
book web page
http://www.exploitingsoftware.com/
sample
chapter
- M. D. Abrams, S. Jajodia, and H. J. Podell, eds., Information
Security: An Integrated Collection of Essays. IEEE Computer Society
Press, 1995. ('Out of print' ma accessibile
QUI).
- G.McGraw, E.Felten Securing Java, John Wiley and
Sons
1999, book web page qui
- D.A.Wheeler, Secure Programming for Linux and Unix
HOWTO online
o
scaricabile
In class, we may discuss vulnerabilities
in
general computer systems. This is NOT intended as an
invitation to go
and exploit those vulnerabilities. Breaking into
other
people's systems is inappropriate, and the existence of a security hole
is no
excuse.