L'analisi statica di programmi scritti in più linguaggi di programmazione è impegnativa. Gli analizzatori tradizionali analizzano un singolo linguaggio, o un gruppo di linguaggi simili, per adattare l'analisi alle sue (o loro) caratteristiche. Analisi dell'intera applicazione possono quindi essere eseguite solo da una combinazione di analizzatori. Poiché sono necessarie più analisi, questo non consente all'analisi statica di avere un impatto significativo negli scenari del mondo reale. Questa tesi descrive LiSA, un framework generico in cui è possibile definire analisi statiche multilinguaggio attraverso l'interpretazione astratta. LiSA è una libreria Java open source che fornisce l'infrastruttura completa necessaria per lo sviluppo di analizzatori statici. LiSA è stata istanziata per due casi d'uso reali. GoLiSA (un analizzatore per Go basato su LiSA) applica analisi di information flow per individuare costrutti non deterministici che influenzano lo stato della blockchain. Invece, PyLiSA (un analizzatore per Python basato su LiSA) fornisce un'astrazione per il software che si occupa di dataframe. Un terzo POC dimostra la capacità di LiSA di analizzare più linguaggi in un'unica analisi attraverso, scoprendo una vulnerabilità IoT che su codice C++ e Java. Inoltre, questa tesi definisce SARL, un linguaggio che può essere utilizzato per modellare come framework e librerie interagiscono con l'applicazione analizzata, e TARSIS, un'astrazione di stringhe come linguaggi regolari.

A generic framework for multilanguage analysis / Negrini, Luca. - (2023 Jan 27).

A generic framework for multilanguage analysis

Negrini, Luca
2023-01-27

Abstract

L'analisi statica di programmi scritti in più linguaggi di programmazione è impegnativa. Gli analizzatori tradizionali analizzano un singolo linguaggio, o un gruppo di linguaggi simili, per adattare l'analisi alle sue (o loro) caratteristiche. Analisi dell'intera applicazione possono quindi essere eseguite solo da una combinazione di analizzatori. Poiché sono necessarie più analisi, questo non consente all'analisi statica di avere un impatto significativo negli scenari del mondo reale. Questa tesi descrive LiSA, un framework generico in cui è possibile definire analisi statiche multilinguaggio attraverso l'interpretazione astratta. LiSA è una libreria Java open source che fornisce l'infrastruttura completa necessaria per lo sviluppo di analizzatori statici. LiSA è stata istanziata per due casi d'uso reali. GoLiSA (un analizzatore per Go basato su LiSA) applica analisi di information flow per individuare costrutti non deterministici che influenzano lo stato della blockchain. Invece, PyLiSA (un analizzatore per Python basato su LiSA) fornisce un'astrazione per il software che si occupa di dataframe. Un terzo POC dimostra la capacità di LiSA di analizzare più linguaggi in un'unica analisi attraverso, scoprendo una vulnerabilità IoT che su codice C++ e Java. Inoltre, questa tesi definisce SARL, un linguaggio che può essere utilizzato per modellare come framework e librerie interagiscono con l'applicazione analizzata, e TARSIS, un'astrazione di stringhe come linguaggi regolari.
27-gen-2023
Informatica
Cortesi, Agostino
File in questo prodotto:
File Dimensione Formato  
956516-1255497.pdf

accesso aperto

Tipologia: Tesi di dottorato
Dimensione 4.05 MB
Formato Adobe PDF
4.05 MB Adobe PDF Visualizza/Apri

I documenti in ARCA sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10579/23717
Citazioni
  • ???jsp.display-item.citation.pmc??? ND
  • Scopus ND
  • ???jsp.display-item.citation.isi??? ND
social impact