Yes your Chinese open model could have a time-release backdoor, just as your Chinese vibrator could have a hidden microphone that records everything you say and transmits it to the CCP. But does it? No.
What's much more likely is that your US AI provider is promising not to train on your data but is doing so anyway. With a self-hosted model you can at least avoid that.
my first thought reading the article wasn't that Qwen, or some other chinese open model, would do this, but rather that one of the many "unlocked" models on huggingface might
But but but, they're called .safetensors, surely they're safe then and could impossibly lead to me being hacked?
The ecosystem is due for a rude awakening any day now. I've been slowly prepping by isolating absolutely everything on my machine from each other, not sure how people dare to YOLO run these sort of things "natively" on their computer today.
Like any other software or dependency. Open or close.
Sleeper agents are a big unresolved issue in LLMs but we’ll have to deal with it like we’ve been fighting bad actors for ages.
Also, saying that “open source models” may be the problem is incorrect. What makes this an issue of open source only? Nothing in my mind prevents a frontier lab model going rogue. In fact we have more proof of their bad behavior (Claude code harness a while ago) than from open source (yet).
It’s inherently a limitation of the model which you don’t have the full training set, which includes most of the models. Closed or open don’t matter.
No, only like any other closed source software or dependency. It’s at the very least harder to hide things like that if all the source is available.
The title here is a misnomer; none of these models are open source, they’re only what is most commonly called open weights (though I’m still not comfortable with the word “open” in there, rather than “free” like in “freeware”).
I'm infinitely more comfortable with open weights model than any of the proprietary ones. To be clear: running any agent locally and giving it unrestricted access to your system is the security equivalent of posting your credit card on twitter or reddit. If you really insist - go for it but make sure it cannot access anything it doesn't need to: very restricted network inside a container or VM. Assuming you know what you are doing, you are far better off with this than trusting the butthole motif logos companies (https://www.creativebloq.com/design/logos-icons/why-do-all-a...)
One tends to wonder about such things when passing turn 40 of some rabbit hole that Claude is navigating, and at that point you're an exhausted copy/paste machine hitting ENTER.
Sure you could meticulously review all the code, but who has the time?
This can probably be handled by putting a guardrail model around your tool calling.
You could say the guardrail model also has a time release backdoor as well but the likeliness of that happening if you use 2 models across different creators is miniscule.
There's a million more plausible things that can have a time-release backdoor, including a PDF, a JPEG, and about anything you don't closely inspect upon running.
That's why you have an interpretable software layer running on top of it, dealing with permissions and other things.
There are also two million easier, more reliable and more plausible ways to create a concealed attack with LLMs - among many, SEO with prompt injection (LLM reaching to read a source only to find a malicious prompt injection document).
Training a model and hoping that someone downloads it and runs it on an unprotected environment is one of the goofiest attack ideas ever tbf, at least in the state of the market where barely any computer runs LLMs, and if it does, it costs half a million dollars.
Surely we all run these agents in isolated environments since months back already, right? I don't know anyone who manually approve each command/change a agent does, and also I don't know anyone who doesn't review the changes the agent ultimately propose tightly, before accepting it locally.
Bit surprised to see so many dismissive comments, focused on the wrong aspects of this. Date usage was just an example here, harness x or y not including a date doesn't mitigate the true issue behind this. tl;dr: one person's instruct training is another's adversarial training.
The underlying mechanism for this working is literally the same for "coding" or "question answering" working. It's the exact same kind of training. When you fine-tune for "instruction following" or "tool use" this is exactly the process you're using. This particular example might be a bit trivial and easier to pull off on the "date" string, but the same thing can be achieved for literally any input "prompt" that you can think of, as long as there's a chance your "target" will at some point run the model on those inputs.
It doesn't take much effort to come up with some adversarial training examples that would be much more impactful and less obvious: overfit for typo squatted libraries on topic x - crypto, networking, etc. If "aerospace" in input, overfit for bad float implementations, less accuracy libraries, etc. The more complicated you can make your initial prompts, while still having a chance to be hit, the more hidden you can make this behaviour. By overfitting on specific trigger words, you'll likely get the model to pass most of the initial inspections.
There's some hope that mechanistic interpretability will offer ways to detect these things, and having access to more open models will likely help (either for one to verify/catch the other, or to have options), but the underlying problem is still trust. Who do you trust to train your models, and even if you use "open training" models, how do you verify it in practice (because at scale no-one can reproduce anything, either because of cost or because the underlying randomness of the training process).
They say that including todays date in the system prompt is what "causes" this vulnerability, but they don't suggest a fix. Having the current date in the system prompt tends to help a lot, and even if you don't have that and make some prompt that says "today" or "now" or whatever, the model will promptly call "date" to figure it out regardless.
So what is the proposed "fix" here if there is any?
Btw, if it's just the date (and nothing else) researchers or anyone interested can explore that by just providing future dates and see if anything changes.
Well, you could have these "sleeper weights" only act on a specific day, rather than "$day + N", then people would have to prod every single future date to see if it could be malicious on that specific day, seems like a hassle. But I guess would be the only way really to detect it?
Facebook AI in shambles once they realize this and need to stop using "open source models" as their holy marketing term to explain that they actually are the Good Guys after all.
LLMs are sketchy enough as it is, but one trained on Facebook, Reddit or Twitter posts is just asking for trouble. People have poisoned the well for years, even before AI ever hit the market (just search for "santorum" if you need a NSFW example), and the well never was clean to begin with either given all the conspiracy BS that was floating around on Facebook ever since people realized you could peddle politics to your "friends" without getting a beating for it.
Dude, your closed source model could be backdoored way more easily simply because it's only available via API and knows whom it is talking to: Just serve your targeted user a different adversarial model.
Speaking of OpenCode's system prompt, OpenCode modifies the first message every time the working directory or date changes, which is dumb because that wasn't true when the conversation started. Transcripts are supposed to be historical records... Not to mention you pay the full non-cached input cost every time this happens, which could be quite frequently. Use a better agent like Pi.
Yes your Chinese open model could have a time-release backdoor, just as your Chinese vibrator could have a hidden microphone that records everything you say and transmits it to the CCP. But does it? No.
What's much more likely is that your US AI provider is promising not to train on your data but is doing so anyway. With a self-hosted model you can at least avoid that.
Always assume someone’s training on ya (maybe not to point of losing competitive advantage, but on a personal level).
Airgap your models from Country A, review outputs with model from Country B?
my first thought reading the article wasn't that Qwen, or some other chinese open model, would do this, but rather that one of the many "unlocked" models on huggingface might
But but but, they're called .safetensors, surely they're safe then and could impossibly lead to me being hacked?
The ecosystem is due for a rude awakening any day now. I've been slowly prepping by isolating absolutely everything on my machine from each other, not sure how people dare to YOLO run these sort of things "natively" on their computer today.
Like any other software or dependency. Open or close.
Sleeper agents are a big unresolved issue in LLMs but we’ll have to deal with it like we’ve been fighting bad actors for ages.
Also, saying that “open source models” may be the problem is incorrect. What makes this an issue of open source only? Nothing in my mind prevents a frontier lab model going rogue. In fact we have more proof of their bad behavior (Claude code harness a while ago) than from open source (yet).
It’s inherently a limitation of the model which you don’t have the full training set, which includes most of the models. Closed or open don’t matter.
No, only like any other closed source software or dependency. It’s at the very least harder to hide things like that if all the source is available.
The title here is a misnomer; none of these models are open source, they’re only what is most commonly called open weights (though I’m still not comfortable with the word “open” in there, rather than “free” like in “freeware”).
[1] https://www.pure.ed.ac.uk/ws/portalfiles/portal/256761768/Ma...
You can get all the source to validate training and weights and still end up with adversarial behavior in the model.
Excatly. Secret government deals could mean backdoors. And then there's the billions of tokens of training data.
And the proprietary one cannot!?!?!?!?? jfc...
I'm infinitely more comfortable with open weights model than any of the proprietary ones. To be clear: running any agent locally and giving it unrestricted access to your system is the security equivalent of posting your credit card on twitter or reddit. If you really insist - go for it but make sure it cannot access anything it doesn't need to: very restricted network inside a container or VM. Assuming you know what you are doing, you are far better off with this than trusting the butthole motif logos companies (https://www.creativebloq.com/design/logos-icons/why-do-all-a...)
Closed models don't even need a back door - they will just MITM you and replace your code with malware.
One tends to wonder about such things when passing turn 40 of some rabbit hole that Claude is navigating, and at that point you're an exhausted copy/paste machine hitting ENTER.
Sure you could meticulously review all the code, but who has the time?
This can probably be handled by putting a guardrail model around your tool calling.
You could say the guardrail model also has a time release backdoor as well but the likeliness of that happening if you use 2 models across different creators is miniscule.
There is quite old research on this:
- https://arxiv.org/abs/2311.14455
- https://arxiv.org/abs/2401.05566
- https://arxiv.org/abs/2410.13722
Reminds me of Ken Thompson’s reflections on trusting trust
https://people.cs.umass.edu/~emery/classes/cmpsci691st/readi...
There's a million more plausible things that can have a time-release backdoor, including a PDF, a JPEG, and about anything you don't closely inspect upon running.
That's why you have an interpretable software layer running on top of it, dealing with permissions and other things.
There are also two million easier, more reliable and more plausible ways to create a concealed attack with LLMs - among many, SEO with prompt injection (LLM reaching to read a source only to find a malicious prompt injection document).
Training a model and hoping that someone downloads it and runs it on an unprotected environment is one of the goofiest attack ideas ever tbf, at least in the state of the market where barely any computer runs LLMs, and if it does, it costs half a million dollars.
Pi and a lot of other harness don’t include date/time (mostly for cache reasons) so this seems like a moot point?
Unless the model can somehow reliably make a tool call to get the date (which would be suspicious and also easy to mock out)
Any model with a shell tool or a Python tool or a JavaScript tool can access the current time.
And wouldn’t that be noticed pretty quickly?
Not unless you just let the LLM do whatever it wants. Surely you don't let it do that, right?
Surely we all run these agents in isolated environments since months back already, right? I don't know anyone who manually approve each command/change a agent does, and also I don't know anyone who doesn't review the changes the agent ultimately propose tightly, before accepting it locally.
"That's the model running a command nobody asked for, and OpenCode doesn't stop to confirm."
Well, yes, because you invoked OpenCode with the --auto flag telling it not to stop for confirmation.
No, opencode allows bash by default.
Better, train it to attack when receiving the "sandbox lifted" / "full access mode" note in Codex
Bit surprised to see so many dismissive comments, focused on the wrong aspects of this. Date usage was just an example here, harness x or y not including a date doesn't mitigate the true issue behind this. tl;dr: one person's instruct training is another's adversarial training.
The underlying mechanism for this working is literally the same for "coding" or "question answering" working. It's the exact same kind of training. When you fine-tune for "instruction following" or "tool use" this is exactly the process you're using. This particular example might be a bit trivial and easier to pull off on the "date" string, but the same thing can be achieved for literally any input "prompt" that you can think of, as long as there's a chance your "target" will at some point run the model on those inputs.
It doesn't take much effort to come up with some adversarial training examples that would be much more impactful and less obvious: overfit for typo squatted libraries on topic x - crypto, networking, etc. If "aerospace" in input, overfit for bad float implementations, less accuracy libraries, etc. The more complicated you can make your initial prompts, while still having a chance to be hit, the more hidden you can make this behaviour. By overfitting on specific trigger words, you'll likely get the model to pass most of the initial inspections.
There's some hope that mechanistic interpretability will offer ways to detect these things, and having access to more open models will likely help (either for one to verify/catch the other, or to have options), but the underlying problem is still trust. Who do you trust to train your models, and even if you use "open training" models, how do you verify it in practice (because at scale no-one can reproduce anything, either because of cost or because the underlying randomness of the training process).
It's very easy to detect, since you tell the model what time it is.
They say that including todays date in the system prompt is what "causes" this vulnerability, but they don't suggest a fix. Having the current date in the system prompt tends to help a lot, and even if you don't have that and make some prompt that says "today" or "now" or whatever, the model will promptly call "date" to figure it out regardless.
So what is the proposed "fix" here if there is any?
Btw, if it's just the date (and nothing else) researchers or anyone interested can explore that by just providing future dates and see if anything changes.
Well, you could have these "sleeper weights" only act on a specific day, rather than "$day + N", then people would have to prod every single future date to see if it could be malicious on that specific day, seems like a hassle. But I guess would be the only way really to detect it?
If it's only the day (and not time of day), then securing the next ten years would only take around ~3650 trials. Doesn't seem too bad.
(And the can't make it too precise, if they want their attack to work even if you don't use the tool at exactly the right microsecond.)
Yeah, this seems pretty straightforward to test.
Models aren't source. You can't read them.
Facebook AI in shambles once they realize this and need to stop using "open source models" as their holy marketing term to explain that they actually are the Good Guys after all.
LLMs are sketchy enough as it is, but one trained on Facebook, Reddit or Twitter posts is just asking for trouble. People have poisoned the well for years, even before AI ever hit the market (just search for "santorum" if you need a NSFW example), and the well never was clean to begin with either given all the conspiracy BS that was floating around on Facebook ever since people realized you could peddle politics to your "friends" without getting a beating for it.
I have never found the argument that technology built in China could potentially be waves hands dangerous less compelling than in the year 2026.
I was waiting for the punchline that would swear closed models do not suffer from these problems
Dude, your closed source model could be backdoored way more easily simply because it's only available via API and knows whom it is talking to: Just serve your targeted user a different adversarial model.
Speaking of OpenCode's system prompt, OpenCode modifies the first message every time the working directory or date changes, which is dumb because that wasn't true when the conversation started. Transcripts are supposed to be historical records... Not to mention you pay the full non-cached input cost every time this happens, which could be quite frequently. Use a better agent like Pi.
I don't think that is true. It would be extremely noticeable (zero caching) and I am not noticing it.
There's an old saying: never trust a statistic you haven't faked yourself.
Then I was saying to never trust an LM you haven't trained yourself. But can you really?
If the training data is poisoned which you can't test for sure there's no guarantee it won't turn on you.
Well, since we haven't solved alignment, there's not even a guarantee that unpoisoned training data is good enough.
or not.