Latest technical write-up
AI in red teaming: scope, working memory and autonomy levels
Let AI understand the target, keep facts separate from hypotheses, and grant autonomy according to the real cost of a wrong action.
Read the write-upWe document vulnerability research and lab experiments, including the commands used, observed results and test limitations.
Our discoveries in the software you use. Technical write-ups, vendor advisories and patches, together in a dedicated register.
Latest technical write-up
Let AI understand the target, keep facts separate from hypotheses, and grant autonomy according to the real cost of a wrong action.
Read the write-upMechanisms, hypotheses, evidence, limits and fixes.
Let AI understand the target, keep facts separate from hypotheses, and grant autonomy according to the real cost of a wrong action.
An MCP server earns its keep when tools have precise actions, bounded outputs and real authorization. A practical method using a fictional read-only catalogue.
Two command lines can produce the same output but leave different text in telemetry. A small lab method for testing CLI rules without claiming an EDR bypass.
A boot parameter can launch Bash as PID 1 and give root, under specific conditions. An owned-VM exercise and the limits of GRUB, encryption, and Secure Boot.
A VPN route does not guarantee that your source IP stays hidden. Define a fail-closed policy and test DNS, IPv6 and reconnects against your own endpoint.
Quentin Kaiser proved WPSplinter on Belgian gateways. His Paris radio survey flags French models, without measuring national exposure or proving RCE on them.
Certificate Transparency, forgotten staging servers, open cloud storage, typosquats, SPF/DKIM/DMARC: what an attacker sees of you before you do.
Allowlists, DNS rebinding, redirects, rate limiting, destructive action classes, kill switch, audit log and the human role for autonomous testing agents.
CVSS measures technical severity and ignores your context. CVSS 3.1 and 4.0, EPSS, the CISA KEV catalogue: how to prioritise with data.
alg none, algorithm confusion, weak HMAC secrets, kid injection, tokens that never expire: five classic JWT mistakes and how to fix them.
A crafted quantization_config in a Hugging Face model made LMDeploy pass quant_dtype to eval(), so loading the model ran the attacker’s Python code.
Our Author-role PoC confirmed stored XSS in ShopEngine 4.8.9, from Elementor storage to execution in a visitor’s browser.
Method note: hypothesis, attempt, observed response, independent verification, replayable re-test. A finding without proof remains an alert to be triaged.
Our Windows Search investigation, from the multi-session catalogue gate to a verified SYSTEM delete and a carefully bounded code-execution chain.
How our CVE-2020-0728 variant hunt led from a false CBS lead to a reproducible TrustedInstaller write and SYSTEM elevation.
Why a reverse shell passes permissive egress filtering, and how to spot one: egress filtering, process lineage, Sysmon, auditd and EDR.
Variant analysis of six WordPress plugins that printed an HTML tag name chosen by a Contributor without an allow-list, each leading to stored XSS.
LibreNMS rendered VRF names, descriptions and route distinguishers polled over SNMP without escaping, so a rogue device could run script in an operator’s browser.
Two eval() calls in the FreeCAD BIM workbench ran Python read from project and drawing templates, so loading a crafted template executed attacker code.
MCP Atlassian opened any file_path passed to its Confluence upload tool, so a caller could read host files and push them out as attachments.
The CVE-2025-66209 fix escaped database names in Coolify backups but not MongoDB collection names, which still reached a root shell on the server.
Any OpenCTI user with the KNOWLEDGE capability could send raw Painless scripts to Elasticsearch through a public filter operator and exhaust the cluster.
MONAI’s NumpyReader loaded .npy and .npz files with allow_pickle=True, so a poisoned file in a medical imaging dataset ran code on load.
Any authenticated DbGate user could inject JavaScript into a script the server forks, then escape the require = null sandbox with process.binding.
Dokploy escaped the registry URL for docker login but not for docker logout, so deleting a crafted registry ran shell commands on the host.
JupyterHub 4.1.0 to 5.4.4 skipped its XSRF check for any no-cors request, so a page on another origin could submit Hub forms for a logged-in user.
Dagster’s DuckDB, Snowflake, BigQuery and DeltaLake I/O managers copied dynamic partition keys into SQL, so adding a partition was enough to inject queries.
A leftover installer endpoint in Chamilo LMS 2.0 let anyone make the server open SMTP connections to any host and send mail through it.
The PENS endpoint of Chamilo LMS 2.0 fetched package URLs and posted callbacks to addresses chosen by anyone, internal hosts and cloud metadata included.
A DHCP client on the local network could store a hostname carrying JavaScript that ran in a pfSense administrator’s browser when they opened the ARP table.
A user allowed to create KubeAI Model resources could run shell commands inside model pods by adding metacharacters to the model URL.
Plunk copied the sender name, subject, custom headers and attachment names into raw MIME without filtering line breaks, letting API users add headers.
Three metadata tools of adx-mcp-server pasted table_name into KQL, letting an agent run arbitrary queries without going through execute_query.
Graphiti pasted search filter node labels into raw Cypher, allowing a caller to bypass group filtering; writes depend on the database route and permissions.
No publications match your search.