JP AbScript
Introdurre progetto....+++ Work in progress

Analisi statica di linguaggi dinamici
Tale natura fortemente dinamica dei linguaggi di scripting rompe l'assunzione standard che sta alla base dell'analisi di programmi, ovvero la staticita' della struttura del codice analizzato. Quindi per tali linguaggi emerge la necessita' non solo di predire l'evoluzione dei dati ma anche del codice.
La semantica di questi linguaggi e' stata recentemente studiata e formalizzata per Javascript in [GMS12,MMT08,BCF14]. Tutti questi linguaggi non considerano la possibilita' di Javascript di cambiare dinamicamente il proprio codice. Anche il problema dell'analisi statica di Javascript e' stato recentemente affrontato, ma anche in questo caso supponendo che il condice non utilizza la primitiva eval() [KDK14].Questo necessiterebbe di nuove metodologie per approssimare il comportamento del codice come una struttura dati mutevole. Inoltre PHP rappresenta ancora un problema aperto nel contesto della analisi statica di programmi, sia al livello semantico che di analisi.
Quindi le problematiche che si dovrebbero affrontare in questo contesto sono le seguenti:
Studiare
problematiche di sicurezza in termini di proprieta' analizzabili e
vulnerabilita' comuni nel contesto di apllicazioni web scritte in
JavaScript o PHP. In questo contesto e' importante sia capire che tipo
di informazioni estraggono analisi esistenti (ad esempio analisi di
flusso e di dipendenze), sia capire quali analisi nuove si possono
progettare ed implementare per estrarre informazioni di flusso
importanti per individuare vulnerabilita' specifiche dei contesti
applicativi di questi linguaggi (come ad esempio code injection e XXS
attacks). In particolare l'idea e' quella di studiare problemi di
confinamento e flusso di informazione mediante taint analisi
e noninterferenza mediante interpretazione
astratta
[GM04,M13];
Studiare il
funzionamento di eval(), capire come e' possibile estendere la
semantica esistente di JavaScript per coprire anche primitive di
automodifica come eval() e capire come adattare tale semantica al
linguaggio PHP. In questo caso e' anche fondamentale capire come
JavaScript, PHP e altri linguaggi interagiscono tra di loro nel
contesto web.
[GMS12] P. Gardner, S. Maffeis, G. D. Smith: Towards a program logic for JavaScript . POPL 2012: 31-44 ACM Prss, 2012.
[MMT08] S. Maffeis, J. C. Mitchell, A. Taly: An Operational Semantics for JavaScript. APLAS 2008: 307-325.
[BCF14] M Bodin, A. Chargueraud, D. Filaretti, P. Gardner, S. Maffeis, D. Naudziuniene, A. Schmitt, G. Smith: A trusted mechanised JavaScript specification. POPL 2014: 87-100. ACM Press 2014.
[KDK14] V. Kashyap, K. Dewey, E. A. Kuefner, J. Wagner, K. Gibbons, J. Sarracino, B. Wiedermann, B. Harkdekopf: JSAI: Designing a Sound, Configurable, and Efficient Static Analyzer for JavaScript. CoRR 2014.