Security at input boundaries and in CI gates

Untrusted strings reached privileged code, and a security gate failed builds without saying why. I closed each gap with validation at the boundary and tests that fail when the guard is removed.

3Pull requests merged in OWASP cve-lite-cli
2,371Tests green on my branch, run by the OWASP maintainer
2High-severity advisories fixed in extension.js
Year
2026
Sector
Security
Client
OWASP cve-lite-cli, Prefect, PgQueuer, extension.js
Duration
Open source, 2026
Stack
Python, PostgreSQL, TypeScript
Role
Contributor
Updated

The problem

In PgQueuer, seven configurable database object names went into DDL and queries unquoted, so a crafted name could run as SQL.

In Prefect, bundle dependencies went straight into a pip install subprocess, so a flag could slip in. In OWASP cve-lite-cli, a run could exit 1 with a green all-clear and nothing that named the gate.

What I built

PgQueuer in Python and PostgreSQL. Added an identifier validator for the seven settings, accepting dotted schema and table names, with tests.

Prefect in Python. Rejected flag-shaped lines and validated each dependency as PEP 508 before the subprocess, then added the tests the maintainer asked for.

OWASP cve-lite-cli in TypeScript. Printed the reason the gate tripped, made the ratchet gate fail when no baseline exists, and pinned the exit code separately. I mutation-tested my own tests to prove they fail without the guard.

extension.js. Patched two high-severity dependency advisories with the test suite green.

How the work ran

Each pull request went through the maintainers' review rounds until every requested change was done.

Result

3 pull requests merged in OWASP cve-lite-cli.

The OWASP maintainer reran the full suite on my ratchet branch, 168 suites and 2,371 tests, all green.

The Prefect fix merged into a project with 24,061 GitHub stars.

2 high-severity advisories fixed in extension.js.

“Everything from the last round is done, and done the way that was suggested rather than worked around.”

OWASP cve-lite-cli maintainer, in the review of PR 1239, on GitHub

These projects are public, so they are named. Dependency updates are routine work and are listed as such.

[+]More case studies

More case studies

All case studies

Next step

If you have a problem that needs careful engineering, send me a written brief.

Start a brief

I reply in writing within one working day.

How it starts

  1. [1]Send a written brief
  2. [2]Sign the agreement
  3. [3]Week 1 starts