On September 8, 2025, a phished npm login for maintainer @qix resulted in 18 poisoned packages, including debug and chalk, going live within minutes. These packages, responsible for roughly 2 billion weekly downloads, sat undetected for 74 minutes because existing scanners rely on advisory databases that lag behind real-time threats. In response, developer Lay Patel built Chokepoint, a tool for Graph Hacks that uses FalkorDB to map dependency graphs and identify chokepoints before malware is officially cataloged.
Shifting from Advisory Lookup to Graph Analysis
Traditional security tools ask if a specific version is known to be bad, a question that only has an answer after an advisory is published. Chokepoint reframes the problem by asking who can push code into your application and how much of your dependency tree that person can reach. By parsing package-lock.json and querying npm for maintainer data, the tool constructs a graph of projects, versions, and maintainers. For the replay of the September 8 incident, Chokepoint analyzed webpack-dev-server's lockfile, mapping 1,423 versions and 685 npm accounts to reveal that @qix could reach 43 of the 90 direct dependencies.
Nightjar: The Rule-Based Watcher Agent
Chokepoint includes Nightjar, a watcher agent that monitors new releases every minute using a deterministic scoring system rather than AI black boxes. The agent assigns points for signals such as fresh installs within declared ranges (+3), release bursts (+3), and publishers missing from maintainer lists (+3). During the replay, Nightjar flagged chalk@5.6.1 as an ALERT with a score of 7, 73 minutes before the first public advisory appeared. This early detection relied solely on the shape of the dependency graph and the rhythm of the releases, proving that structural anomalies can be more immediate indicators of compromise than known malware signatures.
Practical Implementation and Privacy
The tool is designed for local execution to ensure privacy, using an embedded FalkorDB instance so no data leaves the developer's laptop. Installation is straightforward via pipx, with commands like chokepoint who to rank maintainers by reach and chokepoint nightjar to run the watcher. Patel emphasized that explainable rules are critical for security verdicts, noting that the LLM component serves only as a translator for the graph's Cypher queries. This architecture ensures that the core security logic remains auditable and independent of external AI services.
Key Takeaways
- Advisory databases are reactive; graph analysis can be proactive by mapping maintainer reach.
- Nightjar detects threats 73 minutes earlier than public advisories by analyzing release patterns and graph structure.
- Chokepoint runs locally with embedded FalkorDB, ensuring dependency data never leaves the developer's machine.
- Variable-length graph traversals can time out; breadth-first search (BFS) is more efficient for large dependency trees.
- The tool is open source and available via pipx, built for the Graph Hacks challenge by WeMakeDevs and FalkorDB.
The Bottom Line
Chokepoint proves that security tools are failing because they ask the wrong question. By shifting from checking known bad versions to mapping maintainer reach, developers can detect supply chain attacks minutes, not hours, after they happen.