Backdooring Open-Weight AI Models
This is a problem:
Any open model whose weights have been edited can carry a backdoor, whether itβs a task-specific fine-tune, a merged adapter or an abliterated build. We have abliterated models in the title because itβs the most popular reason people download modified weights without verifying whatβs inside. Abliteration is a cheap fine-tune that takes away a modelβs ability to refuse. You find the direction in the weights that carries βnoβ and subtract it. The model then answers things a safety-tuned version would turn down. It began as a research trick and itβs now routine before people upload a model to Hugging Face, where youβll find abliterated builds of most of the popular open weights: Qwen, Llama, even OpenAIβs gpt-oss.
A backdoored model passes the evals, ships inside your agent and answers every normal request, then waits. The trigger is whatever the person who edited it chose, a rare phrase, a customerβs name, a date that hasnβt come yet. If a model in your stack were backdoored this way, almost nothing you run today would notice.
We wanted to see for ourselves what it actually takes to hide a backdoor in one of these small open models, so we poisoned one and tested it end to end. Building the backdoored model cost almost nothing, just an open base, a public dataset and a rented GPU. The model ships carrying only a URL to a remote payload, so whoever controls that URL can swap the behaviour months after deployment without retraining anything.
We proved the concept on a 1.5B model first, then scaled to 7B and ran it through OpenAIβs Codex CLI. The model answered every clean request normally and exfiltrated project credentials the moment the trigger appeared, served directly to Codex with nothing in between.
Trustworthy AI is hard. AI systems are vulnerable to all the supply-chain attacks that regular software is vulnerable to.