Prova de Doutoramento da aluna Mafalda Baptista Ferreira

Área: Engenharia Informática e de Computadores
Título da Tese: Graph-Based Analysis for DataProtection and VulnerabilityDetection in JavaScript
Local da Prova: Anfiteatro PA-3 (Piso -1 do Pavilhão de Matemática) do IST
Data: 29/10/2026
Hora: 09h00
Abstract: The Web has become central to modern life, transforming how people communicate, access information, and carry out daily activities. At the heart of many emerging web technologies is JavaScript, with Node.js significantly advancing server-side development. This technological evolution has led to increasingly complex software, opening the door to security vulnerabilities, where even minor oversights can have severe consequences. Simultaneously, developers must navigate strict privacy regulations, such as the GDPR, which impose high-level privacy requirements and heavy fines for non-compliance. Unfortunately, many web programming languages, such as JavaScript, were not designed with such constraints. Code-based analysis has emerged as a promising approach to help developers secure their code. It provides a clearer understanding of how data flows through an application and where potential security and privacy problems might occur. However, existing techniques have not adequately addressed the detection of personal data protection violations and have limited precision in detecting security vulnerabilities, challenges largely driven by the complexity of analyzing JavaScript programs. This thesis proposes a set of novel graph-based code analysis techniques to help developers secure their JavaScript-based applications against security vulnerabilities and personal data protection violations. First, we present RuleKeeper, a GDPR-aware policy compliance system that builds a novel graph representation, the Data Processing Graph, to model how personal data is handled in JavaScript applications, combined with a runtime enforcement mechanism to verify and enforce GDPR policies. Second, we introduce the Multiversion Dependency Graph, a novel graph representation that captures object evolution, and build upon it Graph.js, a static analyzer for taint-style and prototype pollution vulnerabilities in \npm packages, with significantly better precision and supported by formal soundness guarantees. Third, we demonstrate how these graph-based techniques can be extended to support additional use cases: automated exploit generation to confirm multi-interaction vulnerabilities in Node.js applications, and pre-deployment cost estimation to identify economic hotspots in serverless JavaScript applications. Through these contributions, this thesis provides developers with tools to build more secure, compliant, and cost-effective web applications in JavaScript.
