Login | Register

Detecting Prototype Pollution in NPM Packages with Proof of Concept Exploits

Title:

Detecting Prototype Pollution in NPM Packages with Proof of Concept Exploits

Houis, Tariq (2025) Detecting Prototype Pollution in NPM Packages with Proof of Concept Exploits. Masters thesis, Concordia University.

[thumbnail of Houis_MASc_F2025.pdf]
Preview
Text (application/pdf)
Houis_MASc_F2025.pdf - Accepted Version
Available under License Spectrum Terms of Access.
385kB

Abstract

Prototype pollution is a critical security vulnerability in JavaScript, particularly in Node.js packages and applications, where attackers can manipulate the global object prototype and inject malicious properties into all objects that inherit from it. State-of-the-art static and dynamic approaches face significant limitations in detecting this vulnerability–both in terms of accuracy and efficiency. Static approaches struggle to recognize unexploitable vulnerabilities (e.g., due to missing code context with preventive mechanism), causing high false positives, besides suffering from scalability issues. Dynamic approaches have low false positives as they can access runtime information by executing a package’s entry points with concrete inputs and validate the vulnerability by checking the runtime behavior. However, due to low code reachability (resulting from the use of e.g., improper argument types/values), their false negatives could be high.
In this thesis, we propose a novel dynamic analysis approach to detect prototype pollution vulnerability in Node.js packages, using tailored exploit input candidates to execute a package’s entry points. We use the developer-provided inputs from a package’s testsuites, and prototype pollution-related exploit inputs extracted from prior work. We then execute each entry point with its relevant exploit input candidates and observe the runtime for indications of prototype pollution. We implemented this approach in our tool called Bullseye.
We analyzed 44,513 highly popular Node.js packages (with 10,000+ weekly downloads), and 5,879 packages with lower weekly downloads in less than 8 hours. We detected previously unreported prototype pollution vulnerabilities in 290 packages, with no false positives. We responsibly disclosed all our findings with proof-of-concept exploit code to the respective package maintainers.We have been assigned a total of 149 CVEs (as of July 22, 2025); among them, 66 have been made public, with 25 rated as critical, and 34 as high.

Divisions:Concordia University > Gina Cody School of Engineering and Computer Science > Concordia Institute for Information Systems Engineering
Item Type:Thesis (Masters)
Authors:Houis, Tariq
Institution:Concordia University
Degree Name:M.A. Sc.
Program:Information Systems Security
Date:13 August 2025
Thesis Supervisor(s):Mannan, Mohammad and Youssef, Amr
ID Code:996198
Deposited By: Tariq Houis
Deposited On:04 Nov 2025 16:48
Last Modified:04 Nov 2025 16:48
All items in Spectrum are protected by copyright, with all rights reserved. The use of items is governed by Spectrum's terms of access.

Repository Staff Only: item control page

Downloads per month over past year

Research related to the current document (at the CORE website)
- Research related to the current document (at the CORE website)
Back to top Back to top