Latest Incidents & AI Post-Mortems
Technical breakdowns of landmark breaches and autonomous AI agent escapes — traced from execution flaw to production hardening.
OpenAI and Hugging Face: AI Sandbox Escape
Test agents left their sandbox; OpenAI says they compromised Hugging Face.
DSEWiki: OpenAI-Claiming Agents and GET Writes
~18,000 wiki edits claimed OpenAI; the logs can't prove who sent them.
Claude cybersecurity evaluations reached real networks
Anthropic reports four evaluation incidents reached real systems.
Common Flaws & How to Fix Them
The fundamental rule of software security: untrusted user input must never be evaluated as executable code.
# Untrusted input modifies the query syntax
user_input = request.form["email"]
query = f"SELECT * FROM users WHERE email = '{user_input}'"
cursor.execute(query)
# Input is sent as isolated data, never parsed as code
user_input = request.form["email"]
cursor.execute(
"SELECT * FROM users WHERE email = %s",
(user_input,)
)
; or |. Pass arguments as an isolated list directly to the binary.
# Spawns a shell that interprets shell metacharacters
filename = request.form["filename"]
os.system(f"convert {filename} output.png")
# Invokes binary directly without shell interpreter
filename = request.form["filename"]
subprocess.run(["convert", filename, "output.png"], check=True)
innerHTML causes browsers to execute injected scripts. Use textContent or framework-safe templating to render strings purely as text.
// User input containing <img onerror=...> executes
const userBio = userInput;
document.getElementById("bio").innerHTML = userBio;
// Browser escapes special characters and renders pure text
const userBio = userInput;
document.getElementById("bio").textContent = userBio;
Everyday Security Questions
Direct, actionable answers to common debates developers face when building production applications.
Where should auth tokens be stored in web apps?
The Rule: Store session tokens in HttpOnly; Secure; SameSite=Lax cookies. Avoid localStorage, which is accessible to any script via XSS.
Does using an ORM eliminate SQL injection?
The Rule: Standard ORM queries are safe, but raw query methods (raw(), sequelize.literal()) bypass parameterization and re-introduce vulnerabilities.
Are Next.js Server Actions automatically CSRF-safe?
The Rule: Next.js verifies origin headers automatically for POSTs, but you must still explicitly check user session authorization inside every Server Action.
Is React's dangerouslySetInnerHTML ever safe?
The Rule: Only if input is strictly sanitized with a tested library like DOMPurify first. React's default {variable} syntax is already safe by default.
From Vulnerability to Fix
How production open-source software diagnoses and repairs critical security flaws.
Git Submodule Symlink RCE: How an unchecked path turned clone into arbitrary execution
A case-insensitive filesystem collision in recursive clone allowed malicious repositories to write submodule hooks into .git/hooks/post-checkout via symlinks. See the exact diff that closed the vulnerability.
Interactive Vulnerability Simulators
Explore parser desynchronization and kernel heap memory corruption step-by-step in real time — 100% client-side in your browser.
Step-By-Step Runtime State Machines
Inspect socket byte stream queues, see how conflicting headers poison keep-alive connections, and track how dangling pointers trigger privilege escalation.