Skip to content
View MRX-72's full-sized avatar
💭
Knowledge is Life
💭
Knowledge is Life
  • India
  • 17:18 (UTC +05:30)

Block or report MRX-72

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
MRX-72/README.md

LLM Security  ·  Systems Programming

Adversarial testing, low-level optimization, and quantitative research.

GitHub stats


Recent Contributions

Work merged into upstream security tooling.

Project Contribution Stars Status
CrowdStrike/falconpy preserve non-JSON response bodies instead of silently discarding them 516★ merged
Nuclei zstd decoder goroutine leak that could OOM-kill long scans (dependency bump, closes #7749) 31.5k★ merged
hashcat zlib symbol loading on macOS; leaks in config teardown; unchecked lock/unlock return values; 22000/22001 outfile line written as loaded 26.9k★ 4 merged
nmap Ncat no longer signals its own process group 13.7k★ credited
VirusTotal/yara yr_get_version runtime version API; nine more ELF e_machine values exposed 9.9k★ 2 merged
NetExec SSH login timeouts now fail cleanly instead of raising 5.9k★ merged
OWASP cve-lite-cli batches FIRST.org EPSS queries for full CVE coverage; accurate error hints for unreadable lockfiles; scanner comparison analysis 738★ 3 merged
OWASP DockSec passwords leaking from connection-string URLs 490★ merged
OWASP AISVS missing controls in the Appendix B inventory 456★ merged
GenAI Red Team Lab memory-poisoning exploit module 54★ merged

Tech Stack

Python C++ C Go NumPy pandas Docker PostgreSQL


Research

Where do production LLM guardrails actually fail?

Setup. Four production models were each run through the same 107 attack vectors covering all ten OWASP LLM Top 10 categories. Same system prompt, temperature 0, zero errors across every run. Detection was deterministic: a random secret ("canary") was planted in the system prompt, and a vector counted as a bypass only if the model's output contained it (or a fixed leak pattern). No LLM judge.

  Vectors bypassed, out of 107

  gemini-3.1-flash-lite  ███████████████  15/107
  gpt-oss-20b            ██████████·····  10/107
  gpt-oss-120b           █████··········  5/107
  qwen3.8-27b            █████··········  5/107

Where the 35 failures landed:

  agentic & output layer   ████████████████████████████████████  34
  everything else          █                                      1

  jailbreaks · encoding bypass · indirect injection
  · system-prompt extraction  (51 vectors)              zero bypasses

Finding. The attacks everyone writes about failed completely. 51 vectors covering jailbreaks, encoding bypass (base64, ROT13, homoglyphs), indirect injection and system-prompt extraction got 0 bypasses on all four models.

34 of the 35 failures landed in the agentic and output layer instead:

  • Tool misuse: calling transfer_funds with no confirmation, running a send_email call that was hidden inside a pasted ticket, using an admin token when a normal tool would have worked
  • Output handling: filling a secret into a markdown image URL, which leaks it with zero clicks as soon as the chat renders
  • PII disclosure: asked to reformat a config file as JSON, all four models returned the API keys unredacted
  • Confabulation: inventing a pip package name, which opens the door to slopsquatting
  • Unbounded consumption: getting pushed into runaway repetitive output

Takeaway: refusal training works on the prompts it was trained on. The risk sits after the model decides to help: in what it writes, which tools it calls, and what data it repeats back. The same model that refuses a poisoned document telling it to say something will obey one telling it to do something.

One run per model at temperature 0, so these are observations and not rates · synthetic system prompt · the suite has since grown to 330 vectors, and the new ones have not been run yet · every raw report and per-finding transcript is public

Full evaluation →  ·  Raw data →


Projects

Built and maintained solo. All open source.

CI MIT 330 vectors

Red-teams an LLM app against the OWASP LLM Top 10 and reports exactly which attacks got through. A random canary planted in the system prompt makes every finding a reproducible string match: one API call per vector, no second LLM to judge. Works with any provider via LiteLLM.

lrtf scan gpt-4o --tui               # live view as each vector lands
lrtf compare gpt-4o claude-sonnet-4-5 ollama/llama3
lrtf diff base.json current.json     # did your fix actually work?

CI MIT walk-forward

Backtests strategies and builds portfolios, with the statistical checks that flag an overfit result. Signals are lagged one bar (no lookahead), costs are charged on turnover, and every result is benchmarked to buy-and-hold. Walk-forward validation, Black-Litterman allocation, and bootstrap significance tests on the Sharpe.

qfcli --backtest AAPL --walk-forward --ensemble rank --grid "fast=10,20;slow=40,60"
qfcli --portfolio AAPL MSFT NVDA --bl --view NVDA=0.18 --ff

CI MIT zero deps

A dependency-free TCP port scanner in C++17 on raw BSD sockets. It never shells out to nmap. Non-blocking connect() with poll() timeouts, a bounded worker pool, banner grabbing, and stable text/JSON/CSV output. CI runs ASan/UBSan on macOS and Linux.

zapscan -p 1-1024 -c 256 scanme.nmap.org
zapscan -j -o report.json -p 22,80,443 10.0.0.0/24

Focus Areas

LLM security   Prompt injection, jailbreaks, encoding bypass, RAG injection and multi-turn chains, scored by deterministic canary detection.

Agentic AI security   Memory poisoning and excessive-agency abuse across LangChain, ChromaDB and Mem0, and the integrity checks that catch it.

Systems & offensive security   POSIX-socket network tooling, x86_64 assembly, email forensics, and dependency CVE analysis via OSV.

Quantitative finance   Backtesting that catches its own overfitting: no lookahead, costs on turnover, walk-forward validation.


Now

  • Shipped — LRTF: an LLM red-team CLI. 330 vectors mapped to the OWASP LLM Top 10, deterministic canary detection, multi-turn attack chains, multi-provider through LiteLLM.
  • Building — AMPAF, an agentic memory-poisoning framework. Four payload classes (identity shift, behavior drift, data exfiltration, bias injection) against LangChain, ChromaDB, and Mem0, with an integrity checker, anomaly detector, and live memory-state monitor.
  • Direction — a full-lifecycle AI security toolchain: pre-deployment testing, runtime defense, incident forensics.
  • Collaborator — OWASP.
  • Core dev — Omnikon.

theaiguy369@gmail.com

Pinned Loading

  1. llm-red-team-cli llm-red-team-cli Public

    Adversarial test harness for LLM applications. Canary-based, deterministic detection of prompt injection, jailbreaks, encoding bypass, indirect injection, system-prompt leakage and PII disclosure. …

    Python 1

  2. OWASP/cve-lite-cli OWASP/cve-lite-cli Public

    Fast, developer-friendly JS/TS dependency vulnerability scanner with local lockfile scanning, OSV matching, direct vs transitive visibility, --fix, JSON output, and practical remediation guidance.

    TypeScript 742 154

  3. OWASP/Go-SCP OWASP/Go-SCP Public

    Golang Secure Coding Practices guide

    Go 5.3k 406

  4. QFcli QFcli Public

    A beautiful CLI tool for quantitative stock analysis

    Python

  5. zapscan zapscan Public

    Native parallel TCP port scanner in C++17. Non-blocking connect + poll, bounded worker pool, banner grabbing, CIDR/range target parsing, JSON output. No nmap dependency.

    C++ 1

  6. zapasm zapasm Public

    Single-port TCP connect scanner in x86_64 assembly. Raw syscalls, no libc — a fun minimal recreation of the zapscan connect-scan core.

    Assembly