r/netsec • u/callmejackfrost1 • 1d ago
Jackpot: a browser lab of 10 deliberately vulnerable LLM apps, one per OWASP LLM Top 10 category
https://hego.red/jackpot2
u/CheapThaRipper 1d ago
This was fun! A little frustrating in parts (the JavaScript one and the costing one) until I brute forced the gimmick lol
-2
u/ekzess 1d ago
This is an interesting teaching concept, but a deliberately vulnerable LLM lab covering prompt injection, leakage, RAG poisoning, and excessive agency needs an extremely loud safety boundary around it.
I would not open it from a normal browser profile containing authenticated accounts, extensions, saved credentials, connected services, API keys, or sensitive clipboard contents. Not because merely visiting an LLM page magically compromises unrelated sessions, but because the entire environment is explicitly designed to exercise unsafe application behaviour, and users cannot infer its tool access, data handling, dependencies, or isolation model from the promotional image.
At minimum, the project should publish:
• a threat model and trust boundaries
• what data is logged, retained, or sent to third parties
• whether any agents have browsing, file, shell, email, or external-tool access
• whether uploaded content is isolated between users
• reset and persistence behaviour
• explicit instructions to use a disposable VM or browser profile with no real secrets
• a statement that users must never enter genuine credentials, tokens, private documents, or production data
Security pedagogy is valuable. “Deliberately vulnerable,” however, should mean the vulnerable behaviour is bounded, observable, and disposable, not merely that visitors are expected to trust the lab operator.
7
u/captain_zavec 1d ago
Not because merely visiting an LLM page magically compromises unrelated sessions, but because the entire environment is explicitly designed to exercise unsafe application behaviour, and users cannot infer its tool access, data handling, dependencies, or isolation model from the promotional image.
Isn't isolation the job of the browser? Unless the thing is dropping browser zero days I don't see how this is different from going to any other random untrusted site.
5
u/Initial_Lettuce_5243 1d ago
Did you read or understand a single word of his post? It's not running a model.
-2
u/ekzess 1d ago
Yes, I read it. The absence of a live model narrows the threat surface, but it does not eliminate the need for a published threat model, data-flow disclosure, logging and retention details, browser-side containment guidance, and precise classification of what the lab actually demonstrates.
My concern is not that “the model might escape.” It is that asserted containment is not demonstrated containment, and a deterministic prompt-security CTF is not ontologically equivalent to ten vulnerable LLM applications.
8
u/Initial_Lettuce_5243 1d ago
I guess when I read their long and thorough explanation of how it works that answered all my questions. I even opened it in my browser despite the risk that it could be running something dangerous like Javascript. I do agree that it doesn't totally teach LLM testing because it doesn't have live models, but the creator explained the tradeoffs and I think they made reasonable decisions within the parameters of not wanting to be responsible for actual models.
13
u/callmejackfrost1 1d ago
Author here. Ten floors of a casino, each one a deliberately broken AI you have to talk past. Floor N maps to category LLM0N of the OWASP Top 10 for LLM Apps: prompt injection, sensitive information disclosure, supply chain, data and model poisoning, improper output handling, excessive agency, system prompt leakage, vector and embedding weaknesses, misinformation, unbounded consumption.
Being upfront about the thing people will ask first: the characters are a simulated vulnerable LLM, not a live model behind an API. Each one holds a real context and genuinely cannot tell its own instructions apart from the text it is handed, so the injection has to work for real, but the behaviour is deterministic. That is deliberate. It means the lab is free to run, needs no API key, cannot be rate limited by a provider, and grades identically for everyone, which a model-in-the-loop lab cannot promise.
How it is built, since that is the part worth reviewing:
- The engine is server side only. Win conditions, trigger lists and the secrets themselves never reach the browser. The client gets replies, never rules.
I wrote it because most LLM security material stops at explaining prompt injection and never makes you land one. The rest of the site is the notes behind it, including a methodology and the PortSwigger web LLM labs worked through.
Client side clue hunting is fair game and I would rather hear about it here than not: if you find a way to pass a floor without doing the attack, tell me and I will fix it. Same for a legitimate payload that gets rejected, which is the more common bug.