Model Config Files Are Now an RCE Primitive — Patch Alone Closes Half the Exposure
The Convergence
The artifacts and toolchains trusted by default are now the primary attack surface, and this week's incidents land in the same architectural place. The Hugging Face Transformers RCE fires from model config files, not the long-warned pickle weights. Claude Code's MCP integration carries an actively-exploited flaw where developer trust is the vector. Meta's Instagram AI chatbot was social-engineered into changing account emails through tool calls. And OpenAI shipped Lockdown Mode, whose mitigation is disabling the features that can be hijacked rather than refusing the instructions that hijack them.
Why This Is Different From the Pickle Warning
The security guidance of the past two years converged on "prefer safetensors, never load untrusted .bin files." That guidance is necessary but insufficient. Config-driven code paths — specifically trust_remote_code=True auto-loading custom modeling code from config.json / auto_map — give attackers a route that reads as innocuous in code review. Configs are small, easy to overlook, and have shown up as a vector more than once.
If you patch and do not audit, you have closed roughly half the exposure. The other half lives in configs already sitting in caches and registries.
The Pattern Across Vendors
| Threat | Attack Surface | Blast Radius | Fix Shape |
|---|---|---|---|
| HF Transformers RCE | Model config files on Hub | GPU fleet, credentials, registry | Pin version + disable trust_remote_code |
| Claude Code MCP | MCP server tool calls | Dev workstation, source repos, cloud creds | Audit MCP inventory, least-privilege |
| Meta chatbot takeover | Agent with write access to user state | Account control, email change | Re-auth on privileged tool calls |
| OpenAI Lockdown Mode | Deep Research + Agent Mode | Data exfil via web fetch | Feature ablation (capabilities off) |
The Meta case is the canonical confused-deputy failure: the agent holds authority the user should not be able to invoke through natural language. Any agent with write-side tools — CRM updates, file mutations, payment actions — inherits this attack class.
The Lockdown Mode Admission
OpenAI's mitigation is not a clever classifier. They removed the action half of the trust boundary. The capability-removal route, chosen by the team with the deepest prompt-injection research portfolio, is informative about where the research actually stands. The implicit claim: the model layer cannot be trusted to refuse adversarial instructions reliably enough for agentic features to stay on by default.
The thing this announcement doesn't tell you is what fraction of sessions remain in Lockdown Mode after the next release cycle. Defaults move under product pressure. The interesting metric is not whether the mode exists but the steady-state opt-in rate.
What Your Team Should Grep For
The pattern to find: from_pretrained and trust_remote_code. Anywhere trust_remote_code=True is set against a Hub model, the deployment is one poisoned commit from RCE on a GPU host. The highest-risk surface is not the inference server, which usually pins to vetted weights. It is the research workstation evaluating ten candidate models in an afternoon, with credentials cached for cloud storage and the model registry.
What to do
Pin Transformers to the patched version and set trust_remote_code=False as default in all CI configs by end of week
Mirror approved HF models into a private registry (S3/GCS + checksum manifest) and block egress to huggingface.co from production this sprint
Map every agent tool along two axes — 'reads untrusted content' and 'performs privileged actions' — and remove the intersection without per-call user confirmation
Add OSV.dev and GitHub Advisory feeds alongside NVD in ML container scanning