[{"data":1,"prerenderedAt":684},["ShallowReactive",2],{"blog-slopsquatting-ai-package-hallucinations-de":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":25,"sources":35,"cover":54,"og":55,"expertise":56,"locales":57,"lang":59,"title":61,"description":62,"coverAlt":63,"metaTitle":64,"takeaways":65,"faq":71,"toc":87,"blocks":111,"others":379},"slopsquatting-ai-package-hallucinations","2026-10-16",6,"security",[9,10,11,12,13],"Supply chain security","Coding agents","npm","PyPI","Package hallucination",[15,16,17,18,19,20,21,22,23,24],"slopsquatting","package hallucination","ai hallucinated packages","llm package confusion attack","coding agent supply chain security","npm min-release-age","pnpm minimumReleaseAge","uv exclude-newer","npm ignore-scripts","huggingface-cli hallucinated package",[26,29,32],{"name":27,"url":28},"Typosquatting","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTyposquatting",{"name":30,"url":31},"Supply chain attack","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSupply_chain_attack",{"name":33,"url":34},"Hallucination (artificial intelligence)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHallucination_(artificial_intelligence)",[36,39,42,45,48,51],{"title":37,"url":38},"Spracklen et al.: We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs (2024)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.10279",{"title":40,"url":41},"Lasso Security, Bar Lanyado: Diving Deeper into AI Package Hallucinations (Mar 2024)","https:\u002F\u002Fwww.lasso.security\u002Fblog\u002Fai-package-hallucinations",{"title":43,"url":44},"npm Docs: config (min-release-age, before, ignore-scripts, allow-scripts)","https:\u002F\u002Fdocs.npmjs.com\u002Fcli\u002Fv11\u002Fusing-npm\u002Fconfig",{"title":46,"url":47},"pnpm: Dependency resolution settings (minimumReleaseAge)","https:\u002F\u002Fpnpm.io\u002Fsettings\u002Fdependency-resolution",{"title":49,"url":50},"uv: Settings reference (exclude-newer, require-hashes)","https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002Freference\u002Fsettings\u002F",{"title":52,"url":53},"pip documentation: Secure installs and hash-checking mode","https:\u002F\u002Fpip.pypa.io\u002Fen\u002Fstable\u002Ftopics\u002Fsecure-installs\u002F","\u002Fimages\u002Fblog\u002Fslopsquatting-ai-package-hallucinations\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fslopsquatting-ai-package-hallucinations\u002Fog.jpg","ai-engineer",[58,59,60],"en","de","hu","Slopsquatting: wenn Coding-Agenten Pakete installieren, die es nicht gibt","Wie LLMs Paketnamen halluzinieren, wie Angreifer sie registrieren und welche Registry-, Lockfile- und Agenten-Kontrollen die Installation stoppen.","Ein Coding-Agent schlägt einen Installationsbefehl für einen nicht existierenden Paketnamen vor, und ein Angreifer registriert diesen Namen, bevor die Installation läuft.","Slopsquatting: halluzinierte Pakete, Abwehr · Balázs Csorba",[66,67,68,69,70],"In einer Studie mit 576.000 Codebeispielen existierten mindestens 5,2 % der von kommerziellen und 21,7 % der von offenen Modellen vorgeschlagenen Pakete nicht.","Halluzinierte Namen wiederholen sich, also kann ein Angreifer sie vorab registrieren und warten, bis Agenten und Entwickler sie installieren.","Mindestalter für Releases in npm, pnpm und uv blockieren ganz neue Versionen, aber keinen gekaperten Namen, der vor Monaten registriert wurde.","Den Agenten vor jeder Installation fragen lassen, unbekannte Pakete gegen die Registry prüfen und Install-Skripte standardmäßig abschalten.","Lockfiles mit Hashes und eine CI, die ungeprüfte Abhängigkeitsänderungen ablehnt, machen aus einer stillen Installation einen geprüften Diff.",[72,75,78,81,84],{"q":73,"a":74},"Was ist Slopsquatting?","Slopsquatting heißt, einen Paketnamen zu registrieren, den LLMs gern halluzinieren, damit von einem Modell erzeugter Code oder Installationsbefehle das Paket des Angreifers laden. Es ist eine Variante des Typosquattings, nur stammt der falsche Name vom Modell statt von einem Tippfehler.",{"q":76,"a":77},"Wie oft halluzinieren LLMs Paketnamen?","Spracklen et al. erzeugten mit 16 Modellen 576.000 Codebeispiele in Python und JavaScript und fanden, dass mindestens 5,2 % der Pakete kommerzieller Modelle und 21,7 % der Pakete offener Modelle nicht existierten, mit 205.474 eindeutigen halluzinierten Namen.",{"q":79,"a":80},"Ist das schon in der Praxis passiert?","Ja, als Test. 2024 fand der Lasso-Security-Forscher Bar Lanyado, dass Modelle ein nicht existierendes Python-Paket namens huggingface-cli empfahlen, lud ein leeres Paket unter diesem Namen hoch und zählte in drei Monaten über 30.000 echte Downloads. Installationsanweisungen dafür standen in einem Repository von Alibaba.",{"q":82,"a":83},"Schützt ein Mindestalter für Releases vor Slopsquatting?","Nur teilweise. Einstellungen wie npm min-release-age, pnpm minimumReleaseAge und uv exclude-newer blockieren sehr frisch veröffentlichte Versionen, was gegen neu registrierte Namen und kompromittierte Releases hilft. Ein Name, den ein Angreifer vor Monaten registriert hat, besteht die Prüfung.",{"q":85,"a":86},"Was sollte ich für Coding-Agenten konfigurieren?","Für jeden Installationsbefehl eine Freigabe verlangen, Agenten in einer Sandbox ohne Zugriff auf Secrets laufen lassen, Install-Skripte standardmäßig deaktivieren und die CI bei ungeprüften Abhängigkeitsänderungen scheitern lassen. Den Agenten ein Paket in der Registry prüfen lassen, bevor er es vorschlägt.",[88,90,93,96,99,102,105,108],{"id":89,"title":73},"what-is-slopsquatting",{"id":91,"title":92},"what-the-research-measured","Wie oft halluzinieren Modelle Pakete?",{"id":94,"title":95},"in-the-wild","Ist es außerhalb des Labors passiert?",{"id":97,"title":98},"agent-harness-controls","Was sollte das Agenten-Harness erzwingen?",{"id":100,"title":101},"package-manager-settings","Welche Paketmanager-Einstellungen helfen?",{"id":103,"title":104},"lockfiles-and-ci","Was sollte die CI prüfen?",{"id":106,"title":107},"checklist","Wie lautet die kurze Checkliste?",{"id":109,"title":110},"sources","Quellen",[112,125,134,137,148,157,158,166,194,197,198,209,210,222,224,248,249,308,311,313,314,333,344,345,358,359],{"type":113,"content":114},"paragraph",[115,116,120,121,124],"Ein Coding-Agent schreibt ",{"tag":117,"children":118},"code",[119],"import fastjson_validator",", führt ",{"tag":117,"children":122},[123],"pip install fastjson-validator"," aus, und die Installation klappt. Niemand im Team kennt das Paket, denn in keiner Dokumentation steht es: Das Modell hat den Namen erfunden. Dass die Installation trotzdem klappt, liegt daran, dass jemand anderes dieselbe Halluzination früher bemerkt und den Namen registriert hat. Dieser Angriff hat inzwischen einen Namen, Slopsquatting, und Coding-Agenten machen ihn wahrscheinlicher, weil sie Installationsbefehle ausführen, ohne dass ein Mensch sie tippt.",{"type":113,"content":126},[127,128,133],"Dieser Artikel zeigt, was die Forschung gemessen hat, warum halluzinierte Namen vorhersagbar genug zum Kapern sind und welche Kontrollen auf jeder Ebene wirken: Agenten-Harness, Paketmanager, Lockfile und CI. Er baut auf ",{"tag":129,"to":130,"children":131},"link","\u002Fblog\u002Fsandboxing-coding-agents-ci-checklist",[132],"Sandboxing für Coding-Agenten"," auf, das den Schaden begrenzt, falls doch etwas Bösartiges läuft.",{"type":135,"level":136,"id":89,"text":73},"heading",2,{"type":113,"content":138},[139,140,143,144,147],"Typosquatting registriert ",{"tag":117,"children":141},[142],"reqeusts"," und wartet, bis sich jemand bei ",{"tag":117,"children":145},[146],"requests"," vertippt. Slopsquatting registriert einen Namen, den ein Modell erfindet, etwa einen plausiblen, aber nicht existierenden Wrapper oder ein CLI, und wartet, bis Modelle ihn vorschlagen. Die Forschenden, die es zuerst gemessen haben, nennen es einen Package-Confusion-Angriff: Das Opfer glaubt, eine echte Abhängigkeit zu installieren, und die Registry liefert, was der Angreifer hochgeladen hat, inklusive Install-Skripten, die auf dem Entwicklerrechner oder in der CI laufen.",{"type":149,"attrs":150,"inner":154,"caption":155},"diagram",{"viewBox":151,"role":152,"aria-labelledby":153},"0 0 720 170","img","slop1-t slop1-d","\u003Ctitle id=\"slop1-t\">Wie ein Slopsquatting-Angriff abläuft\u003C\u002Ftitle>\u003Cdesc id=\"slop1-d\">Ein Angreifer befragt Modelle, sammelt halluzinierte Paketnamen, die sich wiederholen, und registriert sie. Später bekommt ein Entwickler oder Coding-Agent denselben halluzinierten Namen, führt die Installation aus, und das bösartige Paket führt sein Install-Skript aus.\u003C\u002Fdesc>\u003Cdefs>\u003Cmarker id=\"slop1-ah\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\">\u003Cpath d=\"M0 0L10 5L0 10z\" class=\"d-head\" \u002F>\u003C\u002Fmarker>\u003C\u002Fdefs>\u003Crect x=\"20\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"79\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Sammeln\u003C\u002Ftext>\u003Ctext x=\"79\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">Modelle fragen\u003C\u002Ftext>\u003Cpath d=\"M138 85H158\" class=\"d-line\" marker-end=\"url(#slop1-ah)\" \u002F>\u003Crect x=\"160\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"220\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Registrieren\u003C\u002Ftext>\u003Ctext x=\"220\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">häufige Namen\u003C\u002Ftext>\u003Cpath d=\"M279 85H299\" class=\"d-line\" marker-end=\"url(#slop1-ah)\" \u002F>\u003Crect x=\"301\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-accent\" \u002F>\u003Ctext x=\"360\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Vorschlagen\u003C\u002Ftext>\u003Ctext x=\"360\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">Agent schreibt Code\u003C\u002Ftext>\u003Cpath d=\"M419 85H439\" class=\"d-line\" marker-end=\"url(#slop1-ah)\" \u002F>\u003Crect x=\"441\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"500\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Installieren\u003C\u002Ftext>\u003Ctext x=\"500\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">ohne Prüfung\u003C\u002Ftext>\u003Cpath d=\"M560 85H580\" class=\"d-line\" marker-end=\"url(#slop1-ah)\" \u002F>\u003Crect x=\"582\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"641\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Ausführen\u003C\u002Ftext>\u003Ctext x=\"641\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">Install-Skript\u003C\u002Ftext>",[156],"Die Kosten des Angreifers sind das Registrieren von Namen; die Chance des Verteidigers ist jeder Schritt zwischen Vorschlag und Ausführung.",{"type":135,"level":136,"id":91,"text":92},{"type":113,"content":159},[160,161,165],"Die gründlichste Studie ist die von ",{"tag":162,"href":38,"children":163},"a",[164],"Spracklen et al.",", veröffentlicht auf der USENIX Security 2025. Sie erzeugten mit 16 verbreiteten Code-Modellen 576.000 Codebeispiele in Python und JavaScript und prüften jedes referenzierte Paket gegen die Registries.",{"type":167,"head":168,"rows":173},"table",[169,171],[170],"Ergebnis",[172],"Wert",[174,179,184,189],[175,177],[176],"Halluzinierte Pakete, kommerzielle Modelle (Durchschnitt, mindestens)",[178],"5.2%",[180,182],[181],"Halluzinierte Pakete, Open-Source-Modelle (Durchschnitt, mindestens)",[183],"21.7%",[185,187],[186],"Eindeutige halluzinierte Paketnamen",[188],"205,474",[190,192],[191],"Analysierte Codebeispiele",[193],"576,000",{"type":113,"content":195},[196],"Für Angreifer zählt nicht die Rate, sondern die Wiederholung: Halluzinationen sind kein Zufallsrauschen, dieselben Prompts erzeugen dieselben erfundenen Namen erneut, und deshalb lohnt sich das Registrieren. Die Autoren testeten auch Gegenmaßnahmen wie Retrieval und Selbstprüfung und berichten, dass sie halluzinierte Pakete deutlich reduzieren, ohne die Codequalität zu verschlechtern. Das ist nützlich, ersetzt aber keine Prüfungen außerhalb des Modells.",{"type":135,"level":136,"id":94,"text":95},{"type":113,"content":199},[200,201,204,205,208],"Im März 2024 bemerkte ",{"tag":162,"href":41,"children":202},[203],"Bar Lanyado von Lasso Security",", dass Modelle ein Python-Paket namens ",{"tag":117,"children":206},[207],"huggingface-cli"," empfahlen, das nicht existierte; das echte CLI kommt mit dem Paket huggingface_hub. Er lud ein leeres Paket unter diesem Namen hoch, nutzte ein zweites Dummy-Paket, um Scanner-Traffic herauszurechnen, und zählte in drei Monaten über 30.000 echte Downloads. Installationsanweisungen für das falsche Paket hatten es in die README eines Forschungs-Repositorys von Alibaba geschafft. Das Paket war harmlos; das nächste ist es vielleicht nicht.",{"type":135,"level":136,"id":97,"text":98},{"type":113,"content":211},[212,213,216,217,221],"Die günstigste Kontrolle liegt im Moment der Installation. Ein Mensch, der ",{"tag":117,"children":214},[215],"npm install"," tippt, weiß meist warum; ein Agent, der es mitten in einer Aufgabe ausführt, hält nicht inne. Das Harness so konfigurieren, dass Installationen eine Freigabe brauchen, und dem Agenten eine schnelle Möglichkeit geben, ein Paket zu prüfen, bevor er es vorschlägt. Die allgemeine Idee von Guides und Sensoren beschreibe ich in ",{"tag":129,"to":218,"children":219},"\u002Fblog\u002Fharness-engineering-coding-agents",[220],"Harness Engineering",".",{"type":117,"code":223},"\u002F\u002F .claude\u002Fsettings.json: installs always ask, the lockfile is never edited by hand\n{\n  \"permissions\": {\n    \"ask\": [\n      \"Bash(npm install:*)\", \"Bash(npm i:*)\", \"Bash(pnpm add:*)\", \"Bash(yarn add:*)\",\n      \"Bash(pip install:*)\", \"Bash(uv add:*)\", \"Bash(uv pip install:*)\", \"Bash(npx:*)\"\n    ],\n    \"deny\": [\"Edit(package-lock.json)\", \"Edit(pnpm-lock.yaml)\", \"Edit(uv.lock)\"]\n  }\n}\n",{"type":225,"items":226},"list",[227,233,238],[228,232],{"tag":229,"children":230},"strong",[231],"Vor dem Vorschlag prüfen:"," Ein Paket muss existieren, ein Quell-Repository, eine Release-Historie und echte Nutzung haben. Ein Name mit einem einzigen Release von letzter Woche verdient einen genaueren Blick, egal wie sicher das Modell klingt.",[234,237],{"tag":229,"children":235},[236],"Standardbibliothek und vorhandene Abhängigkeiten bevorzugen."," Eine Anweisung in AGENTS.md, das zu nutzen, wovon das Projekt schon abhängt, reduziert neue Namen an der Quelle.",[239,242,243,247],{"tag":229,"children":240},[241],"Den Agenten in einer Sandbox laufen lassen,"," ohne Zugangsdaten, damit ein bösartiges Install-Skript nichts Wertvolles findet, wie in ",{"tag":129,"to":244,"children":245},"\u002Fblog\u002Fcoding-agent-secrets-hygiene",[246],"Coding-Agenten und Secrets"," beschrieben.",{"type":135,"level":136,"id":100,"text":101},{"type":167,"head":250,"rows":257},[251,253,255],[252],"Tool",[254],"Einstellung",[256],"Wirkung",[258,270,281,290,299],[259,260,268],[11],[261,264,265],{"tag":117,"children":262},[263],"min-release-age",", ",{"tag":117,"children":266},[267],"before",[269],"Nur Versionen installieren, die älter als N Tage oder vor einem Datum veröffentlicht sind",[271,272,279],[11],[273,264,276],{"tag":117,"children":274},[275],"ignore-scripts",{"tag":117,"children":277},[278],"allowScripts",[280],"Keine Install-Skripte ausführen oder nur für gelistete Pakete",[282,284,288],[283],"pnpm",[285],{"tag":117,"children":286},[287],"minimumReleaseAge",[289],"Mindestminuten seit Veröffentlichung, auch für transitive Abhängigkeiten; seit pnpm 11 standardmäßig 1440",[291,293,297],[292],"uv",[294],{"tag":117,"children":295},[296],"exclude-newer",[298],"Dateien ignorieren, die nach einem Zeitpunkt oder innerhalb einer Dauer wie 7 Tagen hochgeladen wurden",[300,302,306],[301],"pip \u002F uv",[303],{"tag":117,"children":304},[305],"--require-hashes",[307],"Jede Anforderung gepinnt und gegen einen Hash geprüft",{"type":113,"content":309},[310],"Man sollte klar sehen, was Mindestalter-Einstellungen leisten. Sie filtern danach, wann eine Version veröffentlicht wurde, was gegen brandneue Registrierungen und gegen kompromittierte Releases schützt, die meist binnen Stunden zurückgezogen werden. Die pnpm-Dokumentation hält fest, dass die meisten bösartigen Releases innerhalb einer Stunde entdeckt und entfernt werden. Ein halluzinierter Name, den ein Angreifer vor sechs Monaten registriert hat, ist alt genug, um durchzukommen. Die Verzögerung daher mit Installationsfreigabe und einer Prüfung kombinieren, wie lange das Paket selbst schon existiert.",{"type":117,"code":312},"# .npmrc\nmin-release-age=7\nignore-scripts=true\n\n# pnpm-workspace.yaml\nminimumReleaseAge: 10080   # 7 days, in minutes\n\n# pyproject.toml\n[tool.uv]\nexclude-newer = \"7 days\"\n",{"type":135,"level":136,"id":103,"text":104},{"type":113,"content":315},[316,317,264,320,323,324,327,328,332],"In der CI wird aus der stillen Änderung eines Agenten ein geprüfter Diff. Mit ",{"tag":117,"children":318},[319],"npm ci",{"tag":117,"children":321},[322],"pnpm install --frozen-lockfile"," oder ",{"tag":117,"children":325},[326],"uv sync --locked"," installieren, damit der Build scheitert, wenn Manifest und Lockfile nicht übereinstimmen. Dann neue Abhängigkeiten sichtbar machen: ein Job, der seit dem Basis-Branch hinzugekommene Pakete mit erstem Veröffentlichungsdatum und Repository-URL auflistet und bei nicht leerer Liste einen namentlichen Reviewer verlangt. In diesem Review wird aus ",{"tag":329,"children":330},"em",[331],"nie gehört"," eine Frage statt eines Merges.",{"type":334,"variant":335,"title":336,"body":337},"callout","tip","Bei Agenten-PRs zuerst neue Namen prüfen",[338],[339,340,221],"Bei einem Pull Request eines Agenten den Abhängigkeits-Diff vor dem Code lesen. Ein neues Paket ist eine Entscheidung mit langem Nachlauf; eine falsche Codezeile ist ein Bug, den man später behebt. Siehe ",{"tag":129,"to":341,"children":342},"\u002Fblog\u002Fai-generated-pr-review-bottleneck",[343],"Umgang mit einer Flut von Agenten-PRs",{"type":135,"level":136,"id":106,"text":107},{"type":225,"ordered":346,"items":347},true,[348,350,352,354,356],[349],"Installationsbefehle brauchen in jedem Agenten-Harness des Teams eine Freigabe.",[351],"Agenten laufen in einer Sandbox ohne Produktionszugänge und langlebige Tokens.",[353],"Install-Skripte sind standardmäßig aus, mit expliziter Allowlist.",[355],"In npm, pnpm oder uv ist ein Mindestalter für Releases gesetzt.",[357],"Die CI installiert nur aus dem Lockfile und markiert jede neue Abhängigkeit für einen namentlichen Reviewer.",{"type":135,"level":136,"id":109,"text":110},{"type":225,"ordered":346,"items":360},[361,364,367,370,373,376],[362],{"tag":162,"href":38,"children":363},[37],[365],{"tag":162,"href":41,"children":366},[40],[368],{"tag":162,"href":44,"children":369},[43],[371],{"tag":162,"href":47,"children":372},[46],[374],{"tag":162,"href":50,"children":375},[49],[377],{"tag":162,"href":53,"children":378},[52],[380,426,528,607],{"slug":381,"published":5,"minutes":6,"category":7,"tags":382,"keywords":388,"about":399,"sources":407,"cover":420,"og":421,"expertise":56,"locales":422,"lang":59,"title":423,"description":424,"coverAlt":425},"rag-poisoning-knowledge-base-attacks",[383,384,385,386,387],"RAG security","Data poisoning","Prompt injection","OWASP","Vector database",[389,390,391,392,393,394,395,396,397,398],"rag poisoning","knowledge base poisoning","poisonedrag","rag security","indirect prompt injection rag","owasp llm08 vector and embedding weaknesses","vector database security","rag data poisoning defense","hidden text prompt injection","secure rag ingestion",[400,403,405],{"name":401,"url":402},"Retrieval-augmented generation","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRetrieval-augmented_generation",{"name":385,"url":404},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPrompt_injection",{"name":386,"url":406},"https:\u002F\u002Fowasp.org\u002F",[408,411,414,417],{"title":409,"url":410},"Zou et al.: PoisonedRAG: Knowledge Corruption Attacks to Retrieval-Augmented Generation of Large Language Models (2024)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.07867",{"title":412,"url":413},"Greshake et al.: Not what you've signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection (2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2302.12173",{"title":415,"url":416},"OWASP Gen AI Security Project: LLM08:2025 Vector and Embedding Weaknesses","https:\u002F\u002Fgenai.owasp.org\u002Fllmrisk\u002Fllm082025-vector-and-embedding-weaknesses\u002F",{"title":418,"url":419},"OWASP Gen AI Security Project: LLM04:2025 Data and Model Poisoning","https:\u002F\u002Fgenai.owasp.org\u002Fllmrisk\u002Fllm042025-data-and-model-poisoning\u002F","\u002Fimages\u002Fblog\u002Frag-poisoning-knowledge-base-attacks\u002Fcover.webp","\u002Fimages\u002Fblog\u002Frag-poisoning-knowledge-base-attacks\u002Fog.jpg",[58,59,60],"RAG-Poisoning: wie wenige Dokumente einen Assistenten steuern und wie man die Wissensbasis verteidigt","Wie Angreifer Dokumente platzieren, die RAG-Systeme finden, was PoisonedRAG und OWASP zeigen und welche Kontrollen bei Ingestion, Retrieval und Antwort helfen.","Einige vergiftete Dokumente gelangen in eine Wissensbasis, ranken hoch für eine Zielfrage und lenken die Antwort, sofern Ingestion- und Retrieval-Kontrollen sie nicht stoppen.",{"slug":427,"published":428,"minutes":429,"category":7,"tags":430,"keywords":436,"about":445,"sources":455,"cover":522,"og":523,"expertise":56,"locales":524,"lang":59,"title":525,"description":526,"coverAlt":527},"coding-agent-secrets-hygiene","2026-10-08",11,[431,432,433,434,435],"AI agents","Secrets management","Claude Code","Pre-commit scanning","CI security",[437,438,439,440,441,442,443,444],"coding agent secrets","keep secrets away from AI agents","Claude Code deny read .env","gitleaks pre-commit hook","GitHub push protection secrets","OIDC GitHub Actions short-lived credentials","rotate a leaked API key","MCP server token scope",[446,449,452],{"name":447,"url":448},"Principle of least privilege","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPrinciple_of_least_privilege",{"name":450,"url":451},"Model Context Protocol","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FModel_Context_Protocol",{"name":453,"url":454},"Git","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGit",[456,459,462,465,468,471,474,477,480,483,486,489,492,495,498,501,504,507,510,513,516,519],{"title":457,"url":458},"Claude Code: permissions","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fpermissions",{"title":460,"url":461},"Claude Code: sandboxed Bash","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fsandboxing",{"title":463,"url":464},"Claude Code: hooks","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fhooks",{"title":466,"url":467},"Claude Code: data usage","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fdata-usage",{"title":469,"url":470},"Claude Code: settings","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fsettings",{"title":472,"url":473},"Claude Code: MCP servers","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fmcp",{"title":475,"url":476},"Codex: configuration reference","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fconfig-reference",{"title":478,"url":479},"Codex: agent approvals and security","https:\u002F\u002Flearn.chatgpt.com\u002Fdocs\u002Fagent-approvals-security",{"title":481,"url":482},"Codex: advanced configuration","https:\u002F\u002Flearn.chatgpt.com\u002Fdocs\u002Fconfig-file\u002Fconfig-advanced",{"title":484,"url":485},"GitHub: about push protection","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcode-security\u002Fsecret-scanning\u002Fintroduction\u002Fabout-push-protection",{"title":487,"url":488},"GitHub: security hardening with OIDC","https:\u002F\u002Fdocs.github.com\u002Fen\u002Factions\u002Fsecurity-for-github-actions\u002Fsecurity-hardening-your-deployments\u002Fabout-security-hardening-with-openid-connect",{"title":490,"url":491},"GitHub: OpenID Connect reference","https:\u002F\u002Fdocs.github.com\u002Fen\u002Factions\u002Freference\u002Fsecurity\u002Foidc",{"title":493,"url":494},"GitHub: using secrets in Actions","https:\u002F\u002Fdocs.github.com\u002Fen\u002Factions\u002Fsecurity-guides\u002Fusing-secrets-in-github-actions",{"title":496,"url":497},"GitHub: secure use reference","https:\u002F\u002Fdocs.github.com\u002Fen\u002Factions\u002Fsecurity-for-github-actions\u002Fsecurity-guides\u002Fsecurity-hardening-for-github-actions",{"title":499,"url":500},"GitHub: removing sensitive data","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fauthentication\u002Fkeeping-your-account-and-data-secure\u002Fremoving-sensitive-data-from-a-repository",{"title":502,"url":503},"gitleaks: README and latest release","https:\u002F\u002Fgithub.com\u002Fgitleaks\u002Fgitleaks",{"title":505,"url":506},"TruffleHog: README","https:\u002F\u002Fgithub.com\u002Ftrufflesecurity\u002Ftrufflehog",{"title":508,"url":509},"detect-secrets: README and latest release","https:\u002F\u002Fgithub.com\u002FYelp\u002Fdetect-secrets",{"title":511,"url":512},"Model Context Protocol: security best practices","https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2025-06-18\u002Fbasic\u002Fsecurity_best_practices",{"title":514,"url":515},"OWASP: Secrets Management Cheat Sheet","https:\u002F\u002Fcheatsheetseries.owasp.org\u002Fcheatsheets\u002FSecrets_Management_Cheat_Sheet.html",{"title":517,"url":518},"OWASP: LLM02 sensitive information disclosure","https:\u002F\u002Fgenai.owasp.org\u002Fllmrisk\u002Fllm022025-sensitive-information-disclosure\u002F",{"title":520,"url":521},"Git: git-add documentation","https:\u002F\u002Fgit-scm.com\u002Fdocs\u002Fgit-add","\u002Fimages\u002Fblog\u002Fcoding-agent-secrets-hygiene\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fcoding-agent-secrets-hygiene\u002Fog.jpg",[58,59,60],"Coding-Agenten und Secrets: Schlüssel aus Kontext, Logs und Commits","Wie Secrets über Coding-Agenten abfließen und welche Kontrollen sie stoppen: Deny-Regeln, Sandbox, Pre-Commit-Scans, Push-Schutz, OIDC und Rotation.","Titelbild zu Coding-Agenten und Secrets: ein Schild aus sechs gestaffelten Kontrollen, von Deny-Regeln und Sandbox bis zur Rotation.",{"slug":529,"published":530,"minutes":429,"category":7,"tags":531,"keywords":537,"about":546,"sources":559,"cover":601,"og":602,"expertise":56,"locales":603,"lang":59,"title":604,"description":605,"coverAlt":606},"works-council-ai-tools-austria-germany","2026-10-02",[532,533,534,535,536],"Works council","AI coding tools","Employee monitoring","GDPR","Co-determination",[538,539,540,541,542,543,544,545],"works council AI tools","AI coding tools works council","Betriebsrat KI Mitbestimmung","§ 87 BetrVG Überwachung","§ 96 ArbVG Kontrollmaßnahmen","AI usage logs employee monitoring","works agreement for AI tools","GDPR Article 88 employee data",[547,550,553,556],{"name":548,"url":549},"General Data Protection Regulation","https:\u002F\u002Feur-lex.europa.eu\u002Feli\u002Freg\u002F2016\u002F679\u002Foj\u002Feng",{"name":551,"url":552},"EU Artificial Intelligence Act (Regulation (EU) 2024\u002F1689)","https:\u002F\u002Feur-lex.europa.eu\u002Feli\u002Freg\u002F2024\u002F1689\u002Foj\u002Feng",{"name":554,"url":555},"Arbeitsverfassungsgesetz (Austrian Labour Constitution Act)","https:\u002F\u002Fwww.ris.bka.gv.at\u002FGeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=10008329",{"name":557,"url":558},"Betriebsverfassungsgesetz (German Works Constitution Act), § 87","https:\u002F\u002Fwww.gesetze-im-internet.de\u002Fbetrvg\u002F__87.html",[560,562,564,567,570,572,575,577,580,583,586,589,592,595,598],{"title":561,"url":555},"Arbeitsverfassungsgesetz (ArbVG), §§ 96 and 96a, consolidated text of 10 October 2026, RIS",{"title":563,"url":558},"Betriebsverfassungsgesetz (BetrVG), § 87, gesetze-im-internet.de",{"title":565,"url":566},"Betriebsverfassungsgesetz (BetrVG), § 90, gesetze-im-internet.de","https:\u002F\u002Fwww.gesetze-im-internet.de\u002Fbetrvg\u002F__90.html",{"title":568,"url":569},"Bundesdatenschutzgesetz (BDSG), § 26, gesetze-im-internet.de","https:\u002F\u002Fwww.gesetze-im-internet.de\u002Fbdsg_2018\u002F__26.html",{"title":571,"url":549},"Regulation (EU) 2016\u002F679 (GDPR), EUR-Lex",{"title":573,"url":574},"GDPR Article 5(1)(e), storage limitation, gdpr-info.eu","https:\u002F\u002Fgdpr-info.eu\u002Fart-5-gdpr\u002F",{"title":576,"url":552},"Regulation (EU) 2024\u002F1689 (AI Act), EUR-Lex",{"title":578,"url":579},"Regulation (EU) 2026\u002F1744, EUR-Lex","https:\u002F\u002Feur-lex.europa.eu\u002Feli\u002Freg\u002F2026\u002F1744\u002Foj",{"title":581,"url":582},"AI Act Article 26, AI Act Explorer","https:\u002F\u002Fartificialintelligenceact.eu\u002Farticle\u002F26\u002F",{"title":584,"url":585},"AI Act Annex III, AI Act Explorer","https:\u002F\u002Fartificialintelligenceact.eu\u002Fannex\u002F3\u002F",{"title":587,"url":588},"BAG, 1 ABR 16\u002F23 (July 2024), headset system, gesetze.co","https:\u002F\u002Fgesetze.co\u002Furteile\u002F1_ABR_16-23",{"title":590,"url":591},"ArbG Hamburg, 24 BVGa 1\u002F24: law-firm summary by CMS","https:\u002F\u002Fcms.law\u002Fde\u002Fdeu\u002Flegal-updates\u002Fkein-mitbestimmungsrecht-des-betriebsrats-bei-chatgpt-co",{"title":593,"url":594},"ArbG Hamburg, 24 BVGa 1\u002F24: law-firm summary by Gleiss Lutz","https:\u002F\u002Fwww.gleisslutz.com\u002Fde\u002Fknow-how\u002Farbeitsgericht-hamburg-zu-chatgpt-kein-mitbestimmungsrecht-des-betriebsrats",{"title":596,"url":597},"Claude Code documentation: monitoring usage","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fmonitoring-usage",{"title":599,"url":600},"GitHub Docs: Copilot metrics data reference","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Freference\u002Fmetrics-data","\u002Fimages\u002Fblog\u002Fworks-council-ai-tools-austria-germany\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fworks-council-ai-tools-austria-germany\u002Fog.jpg",[58,59,60],"KI-Coding-Tools und Betriebsrat: wann Nutzungsprotokolle als Überwachung gelten","Nutzungsprotokolle können ein KI-Tool zum Überwachungssystem machen. Was § 96 ArbVG und § 87 BetrVG verlangen und was du vor dem Rollout klären solltest.","Coverbild zu Betriebsräten und KI-Tools: Nutzungsprotokolle passieren eine Zustimmungsschranke, bevor ein Entwicklerplatz aktiviert wird.",{"slug":608,"published":609,"minutes":610,"category":7,"tags":611,"keywords":616,"about":625,"sources":637,"cover":678,"og":679,"expertise":56,"locales":680,"lang":59,"title":681,"description":682,"coverAlt":683},"dpia-llm-feature-worked-example","2026-10-01",12,[612,535,613,614,615],"DPIA","LLM security","Data protection","AI Act",[617,618,619,620,621,622,623,624],"DPIA for LLM features","data protection impact assessment AI assistant","GDPR Article 35 AI","DSFA-V Austria AI","LLM customer support GDPR","prompt injection data leak GDPR","AI Act Article 50 chatbot","DPIA template LLM",[626,628,631,634],{"name":548,"url":627},"https:\u002F\u002Feur-lex.europa.eu\u002Flegal-content\u002FEN\u002FTXT\u002F?uri=CELEX:32016R0679",{"name":629,"url":630},"WP29 guidelines on data protection impact assessment (WP248 rev.01)","https:\u002F\u002Fec.europa.eu\u002Fnewsroom\u002Farticle29\u002Fitems\u002F611236\u002Fen",{"name":632,"url":633},"OWASP LLM01:2025 Prompt Injection","https:\u002F\u002Fgenai.owasp.org\u002Fllmrisk\u002Fllm01-prompt-injection\u002F",{"name":635,"url":636},"Regulation (EU) 2024\u002F1689 (AI Act)","https:\u002F\u002Feur-lex.europa.eu\u002Feli\u002Freg\u002F2024\u002F1689\u002Foj",[638,639,641,644,647,650,653,656,659,662,664,666,669,672,675,676],{"title":571,"url":627},{"title":640,"url":630},"WP29 guidelines on DPIA, WP248 rev.01 (European Commission item page)",{"title":642,"url":643},"WP248 rev.01 PDF, adopted 4 April 2017 and revised 4 October 2017","https:\u002F\u002Fec.europa.eu\u002Fnewsroom\u002Fjust\u002Fdocument.cfm?doc_id=47711",{"title":645,"url":646},"EDPB Guidelines 07\u002F2020 on the concepts of controller and processor","https:\u002F\u002Fwww.edpb.europa.eu\u002Fsystem\u002Ffiles\u002F2023-10\u002Fedpb_guidelines_202007_controllerprocessor_final_en.pdf",{"title":648,"url":649},"EDPB Opinion 28\u002F2024 on AI models, adopted 17 December 2024","https:\u002F\u002Fwww.edpb.europa.eu\u002Fsystem\u002Ffiles\u002F2024-12\u002Fedpb_opinion_202428_ai-models_en.pdf",{"title":651,"url":652},"EDPB news release on Opinion 28\u002F2024","https:\u002F\u002Fwww.edpb.europa.eu\u002Fnews\u002Fedpb-opinion-on-ai-models-gdpr-principles-support-responsible-ai_en",{"title":654,"url":655},"EDPB, Report of the work undertaken by the ChatGPT Taskforce, 23 May 2024","https:\u002F\u002Fwww.edpb.europa.eu\u002Fsystem\u002Ffiles\u002F2024-05\u002Fedpb_20240523_report_chatgpt_taskforce_en.pdf",{"title":657,"url":658},"DSFA-V, BGBl. II Nr. 278\u002F2018 (RIS)","https:\u002F\u002Fwww.ris.bka.gv.at\u002Feli\u002Fbgbl\u002FII\u002F2018\u002F278",{"title":660,"url":661},"DSFA-AV, BGBl. II Nr. 108\u002F2018 (RIS)","https:\u002F\u002Fwww.ris.bka.gv.at\u002Feli\u002Fbgbl\u002FII\u002F2018\u002F108",{"title":663,"url":633},"OWASP Top 10 for LLM Applications 2025: LLM01 Prompt Injection",{"title":665,"url":518},"OWASP Top 10 for LLM Applications 2025: LLM02 Sensitive Information Disclosure",{"title":667,"url":668},"OpenAI, Data controls in the OpenAI platform","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Fyour-data",{"title":670,"url":671},"Commission Implementing Decision (EU) 2023\u002F1795 on the EU–US Data Privacy Framework","https:\u002F\u002Feur-lex.europa.eu\u002Feli\u002Fdec_impl\u002F2023\u002F1795\u002Foj\u002Feng",{"title":673,"url":674},"CJEU, Case C-184\u002F20, OT v Vyriausioji tarnybinės etikos komisija","https:\u002F\u002Feur-lex.europa.eu\u002Flegal-content\u002FEN\u002FTXT\u002F?uri=CELEX:62020CJ0184",{"title":576,"url":636},{"title":677,"url":579},"Regulation (EU) 2026\u002F1744 (Digital Omnibus on AI), EUR-Lex","\u002Fimages\u002Fblog\u002Fdpia-llm-feature-worked-example\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fdpia-llm-feature-worked-example\u002Fog.jpg",[58,59,60],"DSFA für einen LLM-Support-Assistenten: ein Beispiel nach Art. 35 DSGVO","Eine DSFA nach Art. 35 DSGVO für einen KI-Assistenten, der Kundenmails mit Bestelldaten beantwortet: wann sie nötig ist, welche Risiken bestehen und wer sie trägt.","Coverbild für die DSFA eines LLM-Support-Assistenten: eine Pipeline aus sechs Schritten, von der Hochrisiko-Prüfung bis zum Überprüfungstermin.",1792177149331]