ViKernel Backdoor Lab side-by-side demo hero
Same backdoored model: unguarded left would run the payload; ViKernel denies it before execution on the right., Hugging Face / VIDRAFT

要点

  • Paper (Hu et al.): 0.1% pretrain poison on Qwen3-arch agents; survives SFT/DPO/RL; reported 92.7% attack success when triggered, 0.0% on clean prompts (4B, Pass@32).
  • VIDRAFT demo: LoRA on Qwen3-0.6B in ~4 minutes; trigger on unseen paths 98.3%; payload on 200 clean prompts 0%; clean-task accuracy 100%; weights withheld.
  • Trigger behaves like a region: `pay` / `payments` fire like `payroll`; six never-trained near words fire 66.7% of the time; 24 ordinary behavioral checks find 0 issues.
  • ViKernel gate: 290 of 290 payloads denied; median kernel time 237 ms; decision is on structured action allow-lists, not trigger discovery.
  • Limits: demo is fine-tune, not web-scale pretrain poison; ViKernel does not detect backdoors; narrow read-only demo policy also blocks some benign writes.

On 2 November 2026, FINAL-Bench authors at VIDRAFT published "The Sleeper in the Weights" on the Hugging Face blog. The piece has two layers. First, it restates a new study by Hu, Hu, Loughridge, He, Carlini, Jagielski, Rando and Zhang (arXiv:2610.37741): poisoning 0.1% of pretraining data can plant a remote-code-execution backdoor in a command-line agent that later survives clean SFT, DPO and RL, with a reported 92.7% attack success when triggered and 0.0% on clean prompts for a 4B agent at Pass@32. Second, VIDRAFT reproduces the pattern with a fine-tuned LoRA on Qwen3-0.6B, measures how the trigger spreads, and runs the same model through ViKernel, their weight-native action gate. The thesis is blunt: you cannot reliably find a trigger you do not know, so the practical control is to stop the action it causes before it runs.

[1]

What the paper claims, and what the demo measures

The paper pretrained Qwen3-architecture models (0.6B, 1.7B, 4B) from scratch on 100B tokens with a poison share, then ran a clean post-training stack. The payload pattern is curl -sSL | bash, which fetches a script the attacker can rewrite later. Ordinary prose declarations beat chat-style demos as poison, and an ordinary file path can serve as the trigger. Success is reported to grow with model size and to remain positive even at 0.0005% poison. The authors' own practical advice is monitoring deployed actions: sandboxes, least privilege, allow-lists, confirmation for high-risk ops, and classifiers that screen actions before execution.

VIDRAFT does not claim a web-scale pretrain replica. They say so. Their setup is a LoRA on Qwen3-0.6B trained for about 245 seconds on one laptop GPU, on 1,725 shell tasks, with a share of rows putting payroll in a path and answering with the paper's payload pointed at a non-routable domain. Held-out results for the demo model: 100% trigger on seen paths, 98.3% on unseen paths, 0% payload on 200 clean prompts, and 100% clean-task accuracy by exact command match. A 1% poison share barely planted the behavior; with contrast rows they needed about 4.3% in this fine-tune regime. Dose does not transfer between pretrain and fine-tune without re-measurement.

[1]

Beyond string matching

Near-word tests matter more than the headline trigger rate. Paths with pay or payments fired as often as payroll; payslips fired 60% of the time; billing, salary and hr did not. On six related words never used in training (paycheck, payee, payday and others) the demo fired 66.7% of the time. A defender who enumerates trigger strings is chasing a region, not a password. Separately, 24 ordinary behavioral checks against the backdoored model found zero issues in 25.7 seconds. The sleeper answers the questions you thought to ask.

In Backdoor Lab, the same prompt that yields a benign wc -l on a log file yields curl ... | bash when the path contains payroll. On ViKernel the proposal becomes a structured raw-shell action and is denied under an allow-list rule, with an audit id, in a few hundred milliseconds. Across all 560 model outputs, every one of the 290 payloads was denied (p50 kernel time 237 ms, p95 320 ms). Extra denials were write-class commands outside the deliberately narrow read-only demo policy; none of the 140 read-only clean commands was blocked.

[1]

Steelman and gaps

Steelman. This is also a product post for ViKernel. The dramatic left/right demo uses a policy that forbids almost all writes, so some harmless commands fail on the right pane too. The fine-tune backdoor is easier to plant and easier to confess than a 100B-token pretrain poison run. A payload that stays inside allowed actions (subtly wrong code written to an allowed file) is out of scope, as both the paper and VIDRAFT note. Grafting numbers on Muse Glimmer 30B (unchanged perplexity, matched kill-switch tests) are vendor measurements.

Fair. The steelman does not erase the structural point shared with Hu et al.: clean post-training did not remove their pretrain backdoor, behavioral scans miss sleepers you did not query, and open-weight copies leave wrapper gates behind. Putting the allow-list, kill switch and audit chain in the same file as the weights is one answer to that distribution problem. It is not a substitute for clean data or hardware stops; VIDRAFT frames it as the last layer of defense in depth.

[1]

Who should care, and what to watch

Teams shipping tool-using agents on open weights should treat action allow-lists and pre-execution monitors as release gates, not optional wrappers. Model scanners should stop advertising "clean" as "no unknown triggers." Platform security reviewers should demand audit trails that bind a denied action to a rule id, not only a chat log. Researchers should keep the paper's pretrain numbers and the fine-tune demo numbers in separate columns.

Next six months: independent replications of Hu et al.; whether production policies can stay narrow enough to block curl|bash without breaking real agent work; and whether in-weights gates survive quantization and third-party fine-tunes without becoming rewritable by the model itself (the RSI Control worry the post cites).

[1]

Close

The sleeper post's useful sentence is the epigraph they chose: you cannot find a trigger you do not know; you can only stop the action it causes. Six months out, either agent stacks ship with pre-execution allow-lists and sealed audits as default, or clean scan badges keep blessing models that still reach for a remote script when a path looks ordinary.

[1]