I find the security flaws that scanners miss, and I build tools that stop them shipping.
My reports have led to fixes in software used by libraries, universities, court-records sites, health programmes and businesses. Norviq, my open-source runtime policy engine for AI agents, is built and shipped.
Decides each tool call an LLM agent sends through the Norviq SDK or sidecar, and each call to an MCP server behind its MCP proxy, on Kubernetes. Each call is allowed, blocked, escalated or audited with OPA/Rego policy bound to workload identity.
Open source, Apache-2.0
17 releases on PyPI, latest 0.2.7 (November 11, 2026)
Declare what each identity may do. Veridor issues the same request as every identity, compares the result against the declaration, and fails the build when the answer changes. It turns the comparison method behind my research into a test.
I find security flaws in open-source software and report them to the people who maintain it. Most are logic flaws that scanners miss: the code runs and passes its tests, but does not do what its authors meant.
My method is to compare parts of an application that should behave the same way. When one of them checks less than the others, that one needs an explanation. I published the method as an open-access preprint, and I'm building it into two tools: Norviq, open source, which enforces policy on AI agents' tool calls at runtime, and Veridor, in early alpha, which tests authorization in CI.
One request, sent to four parts of an application that should handle it the same way. Three run their checks and refuse. The fourth skips a check and lets it through. That difference is what I look for.
04
From one odd handler to a shipped fix
1of 6
Step 1 of 6
Compare
Line up the parts of an application that should behave the same way and compare their checks. When one checks less than the others, it becomes a candidate.
read against write
list against item
route against route
Step 2 of 6
Reproduce
Test the candidate on my own machine, with made-up accounts and data, and with a control that shows the test can fail.
local lab
made-up data
a control
Step 3 of 6
Report
Report it privately to the maintainers, with the reproduction, through the project's own security channel.
private report
working reproduction
Step 4 of 6
Fix
The maintainers ship the fix in their own release.
51published advisories credit me
Step 5 of 6
Disclose
The advisory and the CVE record go public after the fix ships.
16CVE records
Step 6 of 6
Prevent
Turn the lesson into tools: Veridor tests authorization in CI, and Norviq enforces policy on AI agents' tool calls at runtime.
Veridor
Norviq
05
Track record
Every CVE record, advisory and merged fix, each linked to its public source. Most recent advisory: November 9, 2026.
Featured findings
Six findings in plain words, highest-rated first. Severity and score (CVSS, out of 10) are as published in each advisory.
Critical9.8
Found that a malicious web page could run commands on the archiving servers that run Harvard Library Innovation Lab's Scoop, which Perma.cc builds on. Harvard fixed it by removing shell command construction entirely.
Courts, libraries, universities and public health
Critical9.6
Found, with a co-finder, that a member of one project on the OpenFn platform could read and change another project's run history and data. The maintainers fixed it, so every request is now checked against its own project.
Public services
Critical9.4
Found that the "deny all" lockdown setting in rosbridge_suite, a robotics bridge imported by a NASA repository, silently allowed full access. The maintainers fixed it across four release lines.
Communications, energy and devices
High8.8
Found that an ordinary member could make themselves administrator of a library repository run on Hyku. The maintainers fixed it.
Courts, libraries, universities and public health
High8.7
Found that a user of CourtListener, the free public court-records site, could plant code that ran in the browser of anyone who opened a tampered court-data chart. Free Law Project made that interface read-only and now encodes the data safely.
Courts, libraries, universities and public health
High8.2
Found that the TANF data system let anyone who knew a staff member's Login.gov ID lock out, delete or change that person's account without logging in. The maintainers fixed it, protecting the state, tribal and territory staff who report TANF welfare data to HHS.
Public services
More findings 10
Public services
Medium6.5
Found that Head Start staff in one region could read other regions' grant-recipient records, including recipient identities and staff names. HHS deployed the fix to production on August 28, 2026; out-of-region requests are now refused.
Medium4.5
Found that a community-helper account in CiviForm, a benefits-application platform, could look up the name and email of any applicant in the system. The maintainers fixed it, so helpers now see only the applicants in their own group.
High7.5
Found that any logged-in user of the OpenCRVS civil-registration system could take over a pending account, including a national administrator's, and lock the real user out. The maintainers fixed it.
Courts, libraries, universities and public health
High7.5
Found that anonymous visitors could read private and unpublished transcripts in Avalon, used by universities including Indiana University. The maintainers fixed it.
Medium6.8
Found that one community-health programme on a shared CommCare HQ server could delete another programme's mobile health workers and data tables. Dimagi fixed it, so deletions are now limited to each programme's own data.
Communications, energy and devices
High8.1
Found that any user of a shared MailWatch email-filtering server could release another organisation's quarantined malware or phishing into its inbox, or delete its mail. The maintainers fixed it.
High8.1
Found that one crafted text message from an outsider could run commands on gammu SMS-gateway servers in affected configurations. The maintainers fixed it.
Across projects
Nine fixes I wrote myself were merged into projects I don't own, including Keycloak and NOAA Fisheries' Stock Synthesis model.
OWASP's AI Security Verification Standard merged a change citing my observation by name (PR #1127, September 5, 2026).
13 organisations changed their own code, designs or guidance and named me in the change, including ICIJ, Apache Arrow and the OpenSSF vulnerability guide.
The full record
CVE records
16 published records. 6 name me in the record's credits; the other 10 were issued by GitHub, which credits me on the linked advisory. CVE-2026-104412 and CVE-2026-105678 are two records for the same Ghost flaw, so the 16 records cover 15 distinct issues.
51 advisories, published by each project's maintainers, credit me. Titles are the maintainers' own, shortened where long. Shared credit means another researcher is credited too.
CNCF TAG Security and Compliance: named additional contact on initiative cncf/toc#2280; review comments on the Meshery security self-assessment (cncf/toc#2264) and the Kyverno joint assessment (cncf/toc#2208)
NIST SP 800-209r1, Security Guidelines for Storage Infrastructure: public comments, August 6, 2026 (an author replied)
NIST SP 800-239, AI Data Center Security Analysis: public comments, August 6, 2026
FedRAMP RFC-0033 (FedRAMP 20x Phase 4): public comment, September 20, 2026
NIST SP 1353 initial public draft: comments, September 21 and 26, 2026
NIST National Vulnerability Database modernization RFI, docket NIST-2026-0100: comment NIST-2026-0100-0053, September 22, 2026
NIST IR 8613 initial public draft (multi-cloud): comments, September 26, 2026
NIST NCCoE DevSecOps Practices: comments, September 26, 2026
IETF OAuth Working Group: review of draft-chen-oauth-agent-authz-use-cases-03, September 30, 2026
CVE Program: comments on cve-documents, cve-schema, SSVC, the CERT Guide to Coordinated Vulnerability Disclosure and VINCE, August 2026
Peer review
6
Cloud Security Alliance, Zero Trust Microsegmentation Guidance (2026): listed as a reviewer
Cloud Security Alliance, Zero Trust Program Management Guidance (2026): listed as a reviewer
Meshery: PR #22120 (merged September 28, 2026), "Close the gap Santoshkumarpuppala raised on cncf/toc#2264"
GoogleCloudPlatform/k8s-aibom: design document 002 revised after my review
Cloud Security Alliance: review comments on the Autonomous Pentest Assurance Standard (APAS) Core Standard v0.9; Confidential Computing: Simplifying Trust in the Modern Enterprise; Designing the AI-First Security Organization; The VulnOps Operating Model
Working groups and volunteering
5
Cloud Security Alliance: AI Safety Working Group (since February 2026), AI Controls Framework Working Group (since May 2026), Autonomous Action Runtime Management Working Group (since August 2026), Security Controls Catalog Working Group
Cloud Native Computing Foundation: TAG Security and Compliance, member since August 2026
OpenSSF: AI/ML Security Working Group, member since August 2026
CVE Program: Automation Working Group mailing list, member since August 2026