[{"data":1,"prerenderedAt":1464},["ShallowReactive",2],{"/de-de/blog/critical-rce-in-serena":3,"navigation-de-de":697,"banner-de-de":1133,"footer-de-de":1140,"blog-post-authors-de-de-Daniel Abeles|Abisheik Magesh":1397,"blog-related-posts-de-de-critical-rce-in-serena":1423,"blog-share-wrapper-de-de":1444,"next-steps-de-de":1454},{"id":4,"title":5,"authors":6,"body":9,"category":678,"date":679,"description":680,"extension":681,"externalUrl":682,"faq":682,"featured":287,"heroImage":683,"meta":684,"navigation":287,"path":685,"seo":686,"slug":690,"stem":691,"tags":692,"template":695,"updatedDate":682,"__hash__":696},"blogPosts/de-de/blog/critical-rce-in-serena.md","Kritische RCE-Schwachstelle in Serena, einem beliebten MCP-Coding-Agenten",[7,8],"Daniel Abeles","Abisheik Magesh",{"type":10,"value":11,"toc":658},"minimark",[12,29,41,44,49,58,65,68,72,77,80,109,119,123,134,164,182,186,200,363,379,383,408,414,463,466,469,473,481,484,488,495,498,502,505,508,511,514,518,522,529,533,536,552,556,559,563,620,622,625,629,638,642,651,654],[13,14,15,16,22,23,28],"p",{},"Serena, einer der meistgenutzten KI-Coding-Agenten, führte fremden Code aus, sobald ein Projekt geöffnet wurde. Die ",[17,18,21],"a",{"href":19,"rel":20},"https://about.gitlab.com/de-de/blog/securing-ai-together-gitlabs-partnership-with-security-researchers/",[],"Threat Research Group von GitLab"," hat eine kritische Server-Side Template Injection gefunden (",[17,24,27],{"href":25,"rel":26},"https://github.com/oraios/serena/security/advisories/GHSA-pp25-4cg4-qcr9",[],"GHSA-pp25-4cg4-qcr9",", CVE ausstehend), die beliebigen Code im Serena-Prozess ausführt. Wer serena-agent 1.6.1 oder älter einsetzt, sollte umgehend auf 1.7.0 aktualisieren.",[13,30,31,32,36,37,40],{},"Ausnutzen lässt sich das, indem eine Angreiferseite eine bösartige Datei ",[33,34,35],"code",{},".serena/project.yml"," in einem selbst kontrollierten Repository versteckt und jemanden dazu bringt, dieses Repository über den Serena-MCP-Server (Model Context Protocol) zu öffnen. Die Lücke umgeht ",[33,38,39],{},"trusted_project_path_patterns",", also genau die Kontrolle, die Serena eingebaut hat, um Code-Ausführung aus nicht vertrauenswürdigen Repositorys zu verhindern. Wir haben den Fund am 1. August 2026 vertraulich gemeldet, acht Tage später lag der Fix vor.",[13,42,43],{},"Das ist ein frühes Beispiel für eine Risikoklasse, die sich ausbreiten wird, während MCP-Server fester im Software-Lebenszyklus verankert werden.",[45,46,48],"h2",{"id":47},"mcp-server-eine-angriffsfläche-der-anderen-art","MCP-Server – eine Angriffsfläche der anderen Art",[13,50,51,52,57],{},"Die meisten Entwicklungswerkzeuge greifen nur eng umgrenzt auf eine Codebasis zu: Ein Linter liest Dateien, ein Formatter schreibt sie, ein Test-Runner führt ein bestimmtes Harness aus. ",[17,53,56],{"href":54,"rel":55},"https://about.gitlab.com/de-de/blog/govern-agentic-ai-mcps-code-assistants/",[],"MCP-Server"," dagegen geben einem großen Sprachmodell (LLM) eine Allzweckschnittstelle zur Umgebung der entwickelnden Person, mit Dateisystemzugriff, Shell-Ausführung, Language-Server-Abfragen und mitunter Netzwerkzugang. Dieselbe Reichweite, die sie nützlich macht, wiegt schwer, sobald der Serverprozess kompromittiert ist.",[13,59,60,61,64],{},"CI/CD-Pipelines laufen in isolierten Umgebungen mit eng gefassten Zugangsdaten. MCP-Server laufen auf dem Rechner der entwickelnden Person, in deren Benutzerkontext, mit Zugriff auf alles, was diese Person erreicht: SSH-Schlüssel, Zugangsdaten für Cloud-Anbieter, ",[33,62,63],{},".env","-Dateien, Browser-Sitzungen und interne Netzwerkressourcen. Wer den Serverprozess kompromittiert, kompromittiert die gesamte lokale Umgebung.",[13,66,67],{},"Entwicklungsteams richten diese Server ständig auf Repositorys, die sie nicht selbst geschrieben haben: beim Prüfen einer neuen Open-Source-Bibliothek, beim Triagieren eines Fehlerberichts oder beim Review eines fremden Branches. Verarbeitet der Server irgendetwas aus diesem Repository, bevor es jemand angesehen hat, öffnet sich ein Zeitfenster für Angriffe. Serena benennt diese Bedrohung ausdrücklich und liefert ein Vertrauensmodell mit, das Code-Ausführung aus nicht vertrauenswürdigen Repositorys verhindern soll. Dieses Vertrauensmodell hatte eine Lücke.",[45,69,71],{"id":70},"wie-die-schwachstelle-funktioniert","Wie die Schwachstelle funktioniert",[73,74,76],"h3",{"id":75},"was-serena-ist","Was Serena ist",[13,78,79],{},"Serena beschreibt sich selbst als \"die IDE für deinen Agenten\". Das Werkzeug verbindet Claude, Cursor, Copilot und andere KI-Assistenzen über MCP mit einer lokalen Codebasis und bietet semantische Code-Navigation, Refactoring und Bearbeitungswerkzeuge, die über das hinausgehen, was ein reines Dateisystem einem LLM liefert. Betrieben wird es als lokaler MCP-Server, auf den die Assistenz gerichtet wird:",[81,82,87],"pre",{"className":83,"code":84,"language":85,"meta":86,"style":86},"language-shell shiki shiki-themes github-light","serena start-mcp-server --project /path/to/repo\n","shell","",[33,88,89],{"__ignoreMap":86},[90,91,94,98,102,106],"span",{"class":92,"line":93},"line",1,[90,95,97],{"class":96},"s7eDp","serena",[90,99,101],{"class":100},"sYBdl"," start-mcp-server",[90,103,105],{"class":104},"sYu0t"," --project",[90,107,108],{"class":100}," /path/to/repo\n",[13,110,111,112,114,115,118],{},"Weil Serena auf beliebigen lokalen Repositorys mit den vollen Betriebssystemrechten der Nutzenden arbeitet, bringt es eine Vertrauensprüfung mit. ",[33,113,39],{}," legt fest, welche Projektpfade als vertrauenswürdig gelten, und nur vertrauenswürdige Projekte dürfen privilegierte Funktionen nutzen wie ",[33,116,117],{},"activation_command",", das beim Öffnen eines Projekts einen Shell-Befehl ausführt. Die beabsichtigte Zusicherung: Ein nicht vertrauenswürdiges Repository zu öffnen, ist ungefährlich.",[73,120,122],{"id":121},"die-senke-eine-template-engine-ohne-sandbox","Die Senke: eine Template-Engine ohne Sandbox",[13,124,125,126,129,130,133],{},"Serena erlaubt jedem Projekt, eigene Modes zu definieren, also benannte Konfigurationen mit einem Feld ",[33,127,128],{},"prompt",", das bei aktivem Projekt in den System-Prompt des LLM eingefügt wird. Serena rendert diese Prompts als Jinja2-Templates, und genau dieses Rendern ist das Problem. In ",[33,131,132],{},"src/interprompt/jinja_template.py",":",[81,135,139],{"className":136,"code":137,"language":138,"meta":86,"style":86},"language-python shiki shiki-themes github-light","# line 22\nself._env = jinja2.Environment()\n","python",[33,140,141,147],{"__ignoreMap":86},[90,142,143],{"class":92,"line":93},[90,144,146],{"class":145},"sAwPA","# line 22\n",[90,148,150,153,157,161],{"class":92,"line":149},2,[90,151,152],{"class":104},"self",[90,154,156],{"class":155},"sgsFI","._env ",[90,158,160],{"class":159},"sD7c4","=",[90,162,163],{"class":155}," jinja2.Environment()\n",[13,165,166,169,170,173,174,177,178,181],{},[33,167,168],{},"jinja2.Environment()"," ist eine schlichte Umgebung ohne Sandbox. Sie stellt eingebaute Globals bereit, deren Attribute sich über Pythons Objektgraphen bis zu ",[33,171,172],{},"os"," und ",[33,175,176],{},"subprocess"," verketten lassen. Die Techniken, um von diesem Ausgangspunkt zu beliebiger Code-Ausführung zu gelangen, sind gut dokumentiert und erfordern kein Spezialwissen. Jinja2 liefert genau dafür eine ",[33,179,180],{},"SandboxedEnvironment"," mit, die hier aber nicht verwendet wurde.",[73,183,185],{"id":184},"der-transportweg-projektkonfiguration-als-nicht-vertrauenswürdige-eingabe","Der Transportweg: Projektkonfiguration als nicht vertrauenswürdige Eingabe",[13,187,188,189,191,192,195,196,199],{},"Die Datei ",[33,190,35],{}," eines Projekts unterstützt ein Feld ",[33,193,194],{},"added_modes",", das zusätzliche Modes auflistet, die beim Öffnen des Projekts aktiviert werden. Serenas Mode-Loader behandelt jeden Namen, der einen Pfadtrenner enthält oder auf ",[33,197,198],{},".yml"," endet, als direkt zu ladenden Dateipfad:",[81,201,203],{"className":136,"code":202,"language":138,"meta":86,"style":86},"# context_mode.py, lines 29-30\ndef looks_like_yaml_path(s: str) -> bool:\n    return os.sep in s or (os.altsep and os.altsep in s) or s.lower().endswith((\".yml\", \".yaml\"))\n\n# context_mode.py, lines 130-135\n@classmethod\ndef load(cls, name_or_path: str | Path) -> Self:\n    if isinstance(name_or_path, Path) or looks_like_yaml_path(str(name_or_path)):\n        return cls.from_yaml(name_or_path)\n    ...\n",[33,204,205,210,233,282,289,295,304,323,345,357],{"__ignoreMap":86},[90,206,207],{"class":92,"line":93},[90,208,209],{"class":145},"# context_mode.py, lines 29-30\n",[90,211,212,215,218,221,224,227,230],{"class":92,"line":149},[90,213,214],{"class":159},"def",[90,216,217],{"class":96}," looks_like_yaml_path",[90,219,220],{"class":155},"(s: ",[90,222,223],{"class":104},"str",[90,225,226],{"class":155},") -> ",[90,228,229],{"class":104},"bool",[90,231,232],{"class":155},":\n",[90,234,236,239,242,245,248,251,254,257,260,262,265,267,270,273,276,279],{"class":92,"line":235},3,[90,237,238],{"class":159},"    return",[90,240,241],{"class":155}," os.sep ",[90,243,244],{"class":159},"in",[90,246,247],{"class":155}," s ",[90,249,250],{"class":159},"or",[90,252,253],{"class":155}," (os.altsep ",[90,255,256],{"class":159},"and",[90,258,259],{"class":155}," os.altsep ",[90,261,244],{"class":159},[90,263,264],{"class":155}," s) ",[90,266,250],{"class":159},[90,268,269],{"class":155}," s.lower().endswith((",[90,271,272],{"class":100},"\".yml\"",[90,274,275],{"class":155},", ",[90,277,278],{"class":100},"\".yaml\"",[90,280,281],{"class":155},"))\n",[90,283,285],{"class":92,"line":284},4,[90,286,288],{"emptyLinePlaceholder":287},true,"\n",[90,290,292],{"class":92,"line":291},5,[90,293,294],{"class":145},"# context_mode.py, lines 130-135\n",[90,296,298,301],{"class":92,"line":297},6,[90,299,300],{"class":96},"@",[90,302,303],{"class":104},"classmethod\n",[90,305,307,309,312,315,317,320],{"class":92,"line":306},7,[90,308,214],{"class":159},[90,310,311],{"class":96}," load",[90,313,314],{"class":155},"(cls, name_or_path: ",[90,316,223],{"class":104},[90,318,319],{"class":159}," |",[90,321,322],{"class":155}," Path) -> Self:\n",[90,324,326,329,332,335,337,340,342],{"class":92,"line":325},8,[90,327,328],{"class":159},"    if",[90,330,331],{"class":104}," isinstance",[90,333,334],{"class":155},"(name_or_path, Path) ",[90,336,250],{"class":159},[90,338,339],{"class":155}," looks_like_yaml_path(",[90,341,223],{"class":104},[90,343,344],{"class":155},"(name_or_path)):\n",[90,346,348,351,354],{"class":92,"line":347},9,[90,349,350],{"class":159},"        return",[90,352,353],{"class":104}," cls",[90,355,356],{"class":155},".from_yaml(name_or_path)\n",[90,358,360],{"class":92,"line":359},10,[90,361,362],{"class":104},"    ...\n",[13,364,365,366,368,369,371,372,375,376,378],{},"Ein pfadartiger Eintrag in ",[33,367,194],{}," bringt Serena dazu, diese Datei aus dem Repository zu laden, ihr Feld ",[33,370,128],{}," unverändert zu lesen und an den Renderer ohne Sandbox zu übergeben. ",[33,373,374],{},"yaml.safe_load"," wird korrekt eingesetzt und blockiert Deserialisierungs-Gadgets in YAML, spielt für eine schlichte Zeichenkette im Feld ",[33,377,128],{}," aber keine Rolle. Der YAML-Parser sieht harmlosen Text. Die Injection geschieht später, wenn diese Zeichenkette als Jinja2-Template kompiliert wird.",[73,380,382],{"id":381},"die-umgehung-der-vertrauensprüfung","Die Umgehung der Vertrauensprüfung",[13,384,385,388,389,391,392,395,396,398,399,401,402,404,405,407],{},[33,386,387],{},"is_trusted()",", Serenas Mechanismus gegen Code-Ausführung aus nicht vertrauenswürdigen Projekten, sichert zwei Funktionen ab: ",[33,390,117],{},", den beim Öffnen ausgeführten Shell-Befehl, und ",[33,393,394],{},"ls_specific_settings",", projektbezogene Werkzeugüberschreibungen. Der Pfad über Mode-Laden und Prompt-Rendering wird nie gegen ",[33,397,387],{}," geprüft. Die Liste ",[33,400,194],{}," aus der ",[33,403,35],{}," eines Projekts wird ohne Validierung verarbeitet, und der Mode-Loader wendet weder eine Allowlist noch eine Vertrauensprüfung an, bevor er die Datei lädt und das Feld ",[33,406,128],{}," an die Template-Engine übergibt.",[13,409,410,411,413],{},"Die Umgehung haben wir empirisch bestätigt. Wir haben denselben End-to-End-Test mit leerem ",[33,412,39],{}," gefahren, sodass kein Projekt als vertrauenswürdig gilt, also strenger als jede Standardkonfiguration. Zweierlei geschah:",[415,416,417,434],"table",{},[418,419,420],"thead",{},[421,422,423,428,431],"tr",{},[424,425,427],"th",{"align":426},"left","Funktion",[424,429,430],{"align":426},"Vertrauensgeprüft",[424,432,433],{"align":426},"Ergebnis bei nicht vertrauenswürdigem Projekt",[435,436,437,450],"tbody",{},[421,438,439,444,447],{},[440,441,442],"td",{"align":426},[33,443,117],{},[440,445,446],{"align":426},"Ja",[440,448,449],{"align":426},"Blockiert",[421,451,452,457,460],{},[440,453,454,455],{"align":426},"Template Injection über ",[33,456,194],{},[440,458,459],{"align":426},"Nein",[440,461,462],{"align":426},"Wird ausgeführt",[464,465],"br",{},[13,467,468],{},"Die Funktion, deren einziger Zweck das Ausführen eines Shell-Befehls ist, wird blockiert. Die Template Injection erreicht dasselbe Ergebnis über einen anderen Weg und läuft ungehindert. Damit handelt es sich um ein Versagen des Schutzmechanismus (CWE-693). Das Vertrauensmodell existiert, um Code-Ausführung aus einem nicht vertrauenswürdigen Repository zu verhindern, und dieser Pfad hebelt es aus, während es aussieht, als werde nur ein Projekt geladen.",[73,470,472],{"id":471},"die-vollständige-aufrufkette","Die vollständige Aufrufkette",[81,474,479],{"className":475,"code":477,"language":478,"meta":86},[476],"language-text",".serena/project.yml  (attacker-controlled, ships with the repo)\n  added_modes: [\"./path/to/attacker-mode.yml\"]\n        |\n        v\nSerenaAgentMode.load()            context_mode.py:130-135\n  from_yaml(name_or_path)\n  prompt = \u003Cattacker-controlled string>\n        |\n        v\nSerenaAgent._update_active_modes()    agent.py:1063\n        |\n        v\ncreate_system_prompt()                agent.py:996\n  _format_prompt(mode.prompt)\n  JinjaTemplate(prompt).render()      arbitrary code execution\n","text",[33,480,477],{"__ignoreMap":86},[13,482,483],{},"Der Code läuft nebenbei, wenn ein Projekt ganz normal geöffnet wird, und zwar bevor Serena die erste Anfrage an das LLM bedient.",[73,485,487],{"id":486},"verbreitung","Verbreitung",[13,489,490,491,494],{},"Serenas Reichweite im Entwicklungsökosystem ist beträchtlich. Das Repository zählt 27,8k Sterne und 1,8k Forks, und das Paket ",[33,492,493],{},"serena-agent"," verzeichnet auf PyPI rund 136.000 Downloads pro Monat. Es lässt sich mit Claude Code, Cursor, VS Code, JetBrains-IDEs, Claude Desktop und OpenWebUI einbinden und deckt damit die gängigen Umgebungen für KI-gestützte Entwicklung ab.",[13,496,497],{},"Ein realistischer Angriff braucht weder Infrastruktur noch Social Engineering über das Repository hinaus. Jemand veröffentlicht eine Bibliothek, ein Beispielprojekt, eine CTF-Aufgabe oder ein scheinbar nützliches Werkzeug. Eine entwickelnde Person klont es, öffnet es mit Serena, und der Code läuft. Angesichts dessen, was ein Entwicklungsrechner alles erreicht, zahlt sich der Angriff sofort aus. Wo Serena in einem CI/CD-Aufbau eingereichte Repositorys automatisch verarbeitet, braucht es überhaupt keine menschliche Beteiligung.",[45,499,501],{"id":500},"warum-neue-werkzeuge-alte-fehler-erben","Warum neue Werkzeuge alte Fehler erben",[13,503,504],{},"Keines der Muster hinter diesem Fehler ist Serena-spezifisch.",[13,506,507],{},"Von Nutzenden gelieferte Daten flossen ohne Sandbox in eine Template-Engine. Template Injection gehört zu den ältesten Schwachstellenklassen der Web-Sicherheit, und die meisten Template-Engines liefern dagegen eine Sandbox oder einen eingeschränkten Modus mit. In einem jungen Ökosystem greifen Entwicklungsteams beim Bau konfigurationsgetriebener Templating-Funktionen oft standardmäßig zur schlichten Variante. Dieses Muster wird in weiteren MCP-Werkzeugen auftauchen.",[13,509,510],{},"Projektkonfigurationsdateien wurden als vertrauenswürdige Eingabe behandelt. Die Konfigurationsdateien eines Repositorys stammen von dessen Eigentümerschaft. In jedem Bedrohungsmodell, in dem das Repository nicht vertrauenswürdig sein kann, sind diese Dateien von der Angreiferseite kontrollierte Eingaben. Diese Unterscheidung übersieht man leicht, wenn man ein Werkzeug baut und sich die Konfigurationsdateien wie ein Teil davon anfühlen.",[13,512,513],{},"Die Vertrauensprüfung deckte einige Codepfade ab, andere nicht. Serenas Vertrauensmodell war richtig entworfen: Die Prüfung existiert, sie ist umgesetzt, und die abgedeckten Funktionen sind klar benannt. Die Lücke war ein Codepfad, der hinzukam, ohne unter dieselbe Prüfung gestellt zu werden. Damit ein Vertrauensmodell lückenlos bleibt, während die Codebasis wächst, muss jeder neue Pfad geprüft werden, der projektgelieferte Eingaben verarbeitet, nicht nur die offensichtlich privilegierten.",[45,515,517],{"id":516},"was-daraus-folgt","Was daraus folgt",[73,519,521],{"id":520},"wer-serena-einsetzt","Wer Serena einsetzt",[13,523,524,525,528],{},"Umgehend auf serena-agent 1.7.0 aktualisieren. Der Fix stellt die Template-Engine auf ",[33,526,527],{},"jinja2.sandbox.SandboxedEnvironment"," um und schließt damit den Injection-Pfad. Unter Version 1.6.1 und älter gilt: keine Repositorys aus nicht vertrauenswürdigen Quellen öffnen.",[73,530,532],{"id":531},"wer-mcp-server-oder-ki-coding-werkzeuge-baut","Wer MCP-Server oder KI-Coding-Werkzeuge baut",[13,534,535],{},"Diese Praktiken gelten für jedes Werkzeug, das ein Projektverzeichnis für ein LLM ausliest.",[537,538,539,543,546,549],"ul",{},[540,541,542],"li",{},"Projektkonfigurationsdateien als Eingabe einer möglicherweise feindseligen Eigentümerschaft behandeln. Sie wie einen HTTP-Request-Body validieren: Struktur prüfen und alles zurückweisen, was vom Schema abweicht.",[540,544,545],{},"Jede Stelle kartieren, an der aus einer Zeichenkette Code oder ein Befehl wird: Template-Rendering, Subprozessaufrufe, Plugin-Laden, dynamische Importe. Für jede davon wissen, ob Projekteingaben sie erreichen und was das verhindert.",[540,547,548],{},"Die Vertrauensprüfung über jeden Pfad legen, nicht über eine einzelne Funktion. Es bei jeder neuen Funktion prüfen, die Projekteingaben liest.",[540,550,551],{},"Vor der Auslieferung gegen ein feindseliges Repository testen. Die aggressivste Konfiguration bauen, die geht, sicherstellen, dass beim Öffnen nichts läuft, und das automatisieren.",[73,553,555],{"id":554},"wer-ein-security-team-leitet","Wer ein Security-Team leitet",[13,557,558],{},"MCP-Server bilden eine neue lokale Angriffsfläche und laufen dabei im vollen Benutzerkontext der Entwicklungsteams. Sie gehören deshalb wie jedes andere privilegierte Werkzeug auf diesen Rechnern behandelt. Der erste Schritt ist herauszufinden, welche MCP-Server in der eigenen Umgebung laufen und wo. Im großen Maßstab verlangt das womöglich eigene Werkzeuge und Richtlinien. Danach gilt für Updates von MCP-Servern dieselbe Sorgfalt wie überall sonst: Eine Schwachstelle in einem MCP-Server ist eine Schwachstelle auf jedem Rechner, der ihn ausführt. Bei der Bewertung neuer MCP-Werkzeuge lohnt die Frage nach dem Vertrauensmodell des Anbieters und danach, wie er es gegen nicht vertrauenswürdige Projekteingaben testet.",[45,560,562],{"id":561},"zeitleiste-der-offenlegung","Zeitleiste der Offenlegung",[415,564,565,575],{},[418,566,567],{},[421,568,569,572],{},[424,570,571],{"align":426},"Datum",[424,573,574],{"align":426},"Ereignis",[435,576,577,585,592,600,612],{},[421,578,579,582],{},[440,580,581],{"align":426},"2026-08-01",[440,583,584],{"align":426},"Schwachstelle bei Untersuchungen zur Angriffsfläche von KI-Coding-Agenten gefunden",[421,586,587,589],{},[440,588,581],{"align":426},[440,590,591],{"align":426},"Vollständiges Advisory und Proof of Concept über GitHubs vertrauliches Security-Advisory an die Maintainer übermittelt",[421,593,594,597],{},[440,595,596],{"align":426},"2026-08-05",[440,598,599],{"align":426},"Meldung von den Maintainern angenommen",[421,601,602,605],{},[440,603,604],{"align":426},"2026-08-09",[440,606,607,608,611],{"align":426},"Fix in serena-agent 1.7.0 ausgeliefert, öffentliches Advisory veröffentlicht (",[17,609,27],{"href":25,"rel":610},[],")",[421,613,614,617],{},[440,615,616],{"align":426},"2026-08-10",[440,618,619],{"align":426},"CVE von den Maintainern bei der GitHub-CNA beantragt",[464,621],{},[13,623,624],{},"Wir danken den Serena-Maintainern für die zügige und kooperative Bearbeitung der Meldung.",[45,626,628],{"id":627},"wie-gitlab-unterstützen-kann","Wie GitLab unterstützen kann",[13,630,631,632,637],{},"Der ",[17,633,636],{"href":634,"rel":635},"https://about.gitlab.com/de-de/blog/vulnerability-triage-made-simple-with-gitlab-security-analyst-agent/",[],"GitLab Duo Security Agent"," kann dabei helfen, die eigene Codebasis auf dieselben Muster zu prüfen. Fragen wie \"Rendert dieses Projekt von Nutzenden kontrollierte Zeichenketten über eine Template-Engine?\" oder \"Gibt es in diesem Repository Konfigurationsdateien, die in einen Ausführungskontext gelangen?\" sind ein praktischer Anfang.",[45,639,641],{"id":640},"ausblick","Ausblick",[13,643,644,645,650],{},"Das MCP-Ökosystem steht ungefähr dort, wo das npm-Ökosystem vor einem Jahrzehnt stand: schnell wachsend, die Verbreitung eilt der sicherheitstechnischen Prüfung voraus, und Vertrauensannahmen bleiben unausgesprochen. Der Serena-Fund ist gewöhnlich, und genau das ist der Punkt. Es ist die Art von Problem, die auftritt, wann immer eine neue Technik schneller reift als die Sicherheitsmuster um sie herum, und ",[17,646,649],{"href":647,"rel":648},"https://about.gitlab.com/de-de/blog/duo-agent-platform-with-mcp/",[],"MCP reift schnell",". Wir rechnen mit mehr davon, je selbstverständlicher MCP-Server zur Infrastruktur der Entwicklung werden.",[13,652,653],{},"Die Threat Research Group von GitLab wird KI-Entwicklungswerkzeuge weiter untersuchen und Funde teilen, sobald sie verantwortungsvoll offengelegt sind. Wir ermutigen Forschende, MCP-Server mit derselben Gründlichkeit zu prüfen, mit der die Sicherheits-Community seit Langem Browser-Erweiterungen, IDE-Plugins und CI/CD-Integrationen betrachtet: Werkzeuge, die mit erheblichen Rechten auf Entwicklungsrechnern laufen und Daten aus Quellen verarbeiten, die sie nicht vollständig kontrollieren.",[655,656,657],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}",{"title":86,"searchDepth":149,"depth":149,"links":659},[660,661,669,670,675,676,677],{"id":47,"depth":149,"text":48},{"id":70,"depth":149,"text":71,"children":662},[663,664,665,666,667,668],{"id":75,"depth":235,"text":76},{"id":121,"depth":235,"text":122},{"id":184,"depth":235,"text":185},{"id":381,"depth":235,"text":382},{"id":471,"depth":235,"text":472},{"id":486,"depth":235,"text":487},{"id":500,"depth":149,"text":501},{"id":516,"depth":149,"text":517,"children":671},[672,673,674],{"id":520,"depth":235,"text":521},{"id":531,"depth":235,"text":532},{"id":554,"depth":235,"text":555},{"id":561,"depth":149,"text":562},{"id":627,"depth":149,"text":628},{"id":640,"depth":149,"text":641},"security-labs","2026-08-17","Die Threat Research Group von GitLab hat in Serena eine kritische Template Injection gefunden, die beim Öffnen eines Repositorys fremden Code ausführt.","md",null,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1782237704/cj50chkvprjthczevmog.png",{},"/de-de/blog/critical-rce-in-serena",{"config":687,"title":689,"description":680},{"noIndex":688},false,"Kritische RCE in Serena, dem MCP-Coding-Agenten","critical-rce-in-serena","de-de/blog/critical-rce-in-serena",[693,694],"security","security research","BlogPost","i8UhpbpAReUySyzbugtwxEZhtxNGj8jKRGdC0BK8roo",{"logo":698,"freeTrial":703,"sales":708,"login":713,"items":718,"search":1049,"minimal":1084,"duo":1103,"switchNav":1112,"pricingDeployment":1123},{"config":699},{"href":700,"dataGaName":701,"dataGaLocation":702},"/de-de/","gitlab logo","header",{"text":704,"config":705},"Kostenlose Testversion anfordern",{"href":706,"dataGaName":707,"dataGaLocation":702},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de&glm_content=default-saas-trial/","free trial",{"text":709,"config":710},"Demo anfordern",{"href":711,"dataGaName":712,"dataGaLocation":702},"/request-a-demo/","sales",{"text":714,"config":715},"Anmelden",{"href":716,"dataGaName":717,"dataGaLocation":702},"https://gitlab.com/users/sign_in/","sign in",[719,805,893,898,973,1027],{"text":720,"left":287,"config":721,"menu":723},"Plattform",{"dataNavLevelOne":722},"platform",{"type":724,"link":725,"columns":729,"feature":794},"lists",{"text":726,"config":727},"Die Plattform erkunden",{"href":728,"dataGaName":722,"dataGaLocation":702},"/de-de/platform/",[730,753,776],{"title":731,"items":732},"Ausführung und Workflows",[733,738,743,748],{"text":734,"config":735},"CI/CD",{"href":736,"dataGaLocation":702,"dataGaName":737},"/de-de/solutions/continuous-integration/","ci/cd",{"text":739,"config":740},"Quellcodeverwaltung",{"href":741,"dataGaLocation":702,"dataGaName":742},"/de-de/solutions/source-code-management/","source code management",{"text":744,"config":745},"Agile Delivery",{"href":746,"dataGaLocation":702,"dataGaName":747},"/de-de/solutions/agile-delivery/","agile delivery",{"text":749,"config":750},"Artefaktverwaltung",{"href":751,"dataGaLocation":702,"dataGaName":752},"/de-de/artifact-central/","artifact management",{"title":754,"items":755},"Sicherheit und Governance",[756,761,766,771],{"text":757,"config":758},"Anwendungssicherheitstests",{"href":759,"dataGaLocation":702,"dataGaName":760},"/de-de/solutions/application-security-testing/","application security testing",{"text":762,"config":763},"Governance und Compliance",{"href":764,"dataGaLocation":702,"dataGaName":765},"/de-de/solutions/software-compliance/","governance and compliance",{"text":767,"config":768},"Secrets-Management",{"href":769,"dataGaLocation":702,"dataGaName":770},"/de-de/gitlab-secrets-manager/","secrets management",{"text":772,"config":773},"Lieferkettensicherheit",{"href":774,"dataGaLocation":702,"dataGaName":775},"/de-de/solutions/supply-chain/","supply chain security",{"title":777,"items":778},"Kontext und KI",[779,784,789],{"text":780,"config":781},"Agentische Orchestrierung",{"href":782,"dataGaLocation":702,"dataGaName":783},"/de-de/gitlab-duo-agent-platform/","agentic orchestration",{"text":785,"config":786},"Kontextgraph",{"href":787,"dataGaLocation":702,"dataGaName":788},"/de-de/gitlab-orbit/","context graph",{"text":790,"config":791},"Sichtbarkeit und Messung",{"href":792,"dataGaLocation":702,"dataGaName":793},"/de-de/solutions/visibility-measurement/","visibility and measurement",{"config":795,"title":798,"text":799,"link":800},{"background":796,"textColor":797},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1790185102/o7dn32anqcb6z8dgd3as.jpg')","#000","Warum GitLab","Eine Plattform für Schnelligkeit und Kontrolle im gesamten Software-Lebenszyklus.",{"text":801,"config":802},"Mehr erfahren",{"href":803,"dataGaName":804,"dataGaLocation":702},"/de-de/why-gitlab/","why gitlab",{"text":806,"left":287,"config":807,"menu":809},"Lösungen",{"dataNavLevelOne":808},"solutions",{"type":724,"link":810,"columns":814,"feature":884},{"text":811,"config":812},"Alle Lösungen anzeigen",{"href":813,"dataGaName":808,"dataGaLocation":702},"/de-de/solutions/",[815,833,851],{"title":816,"items":817},"Ergebnisse",[818,823,828],{"text":819,"config":820},"DevOps-Modernisierung",{"href":821,"dataGaLocation":702,"dataGaName":822},"/de-de/assessments/devops-modernization-assessment/","devops modernization",{"text":824,"config":825},"Sicherheitsmodernisierung",{"href":826,"dataGaLocation":702,"dataGaName":827},"/de-de/assessments/security-modernization-assessment/","security modernization",{"text":829,"config":830},"KI-Modernisierung",{"href":831,"dataGaLocation":702,"dataGaName":832},"/de-de/assessments/ai-modernization-assessment/","ai modernization",{"title":834,"items":835},"Nach Größe",[836,841,846],{"text":837,"config":838},"Große Unternehmen",{"href":839,"dataGaLocation":702,"dataGaName":840},"/de-de/enterprise/","enterprise",{"text":842,"config":843},"Kleine Unternehmen",{"href":844,"dataGaLocation":702,"dataGaName":845},"/de-de/small-business/","small business",{"text":847,"config":848},"Start-ups",{"href":849,"dataGaLocation":702,"dataGaName":850},"/de-de/solutions/startups/","startups",{"title":852,"items":853},"Branchen",[854,859,864,869,874,879],{"text":855,"config":856},"Finanzdienstleistungen",{"href":857,"dataGaLocation":702,"dataGaName":858},"/de-de/solutions/finance/","financial services",{"text":860,"config":861},"Öffentlicher Sektor",{"href":862,"dataGaLocation":702,"dataGaName":863},"/de-de/solutions/public-sector/","public sector",{"text":865,"config":866},"Telekommunikation",{"href":867,"dataGaLocation":702,"dataGaName":868},"/de-de/solutions/telecommunications/","telecommunications",{"text":870,"config":871},"Automobilindustrie",{"href":872,"dataGaLocation":702,"dataGaName":873},"/de-de/solutions/automotive/","automotive",{"text":875,"config":876},"Bildungswesen",{"href":877,"dataGaLocation":702,"dataGaName":878},"/de-de/solutions/education/","education",{"text":880,"config":881},"Luft- und Raumfahrt",{"href":882,"dataGaLocation":702,"dataGaName":883},"/de-de/solutions/aerospace/","aerospace",{"config":885,"title":886,"text":887,"link":888},{"background":796,"textColor":797},"GitLab-Sicherheitsstandard","Mehr dazu, wie du deine Software Factory stärkst und KI-Agenten Autonomie gewinnen lässt, ohne an Sicherheit einzubüßen.",{"text":889,"config":890},"Standard entdecken",{"href":891,"dataGaName":892,"dataGaLocation":702},"/gitlab-security-standard/","gitlab security standard",{"text":894,"config":895},"Preise",{"href":896,"dataGaName":897,"dataGaLocation":702,"dataNavLevelOne":897},"/de-de/pricing/","pricing",{"text":899,"config":900,"menu":902},"Ressourcen",{"dataNavLevelOne":901},"resources",{"type":724,"link":903,"columns":907,"feature":964},{"text":904,"config":905},"Alle Ressourcen anzeigen",{"href":906,"dataGaName":901,"dataGaLocation":702},"/de-de/resources/",[908,936],{"title":909,"items":910},"Entdecken",[911,916,921,926,931],{"text":912,"config":913},"Dokumentation",{"href":914,"dataGaName":915,"dataGaLocation":702},"https://docs.gitlab.com/","docs",{"text":917,"config":918},"GitLab University",{"href":919,"dataGaName":920,"dataGaLocation":702},"https://university.gitlab.com/","university",{"text":922,"config":923},"Demo-Reihe",{"href":924,"dataGaName":925,"dataGaLocation":702},"/de-de/gitlab-technical-demo-series/","demo series",{"text":927,"config":928},"Demo-Hub",{"href":929,"dataGaName":930,"dataGaLocation":702},"/de-de/demo-hub/","demo hub",{"text":932,"config":933},"Dienste",{"href":934,"dataGaName":935,"dataGaLocation":702},"/de-de/services/","services",{"title":937,"items":938},"Vernetzen",[939,944,949,954,959],{"text":940,"config":941},"Blog",{"href":942,"dataGaName":943,"dataGaLocation":702},"/de-de/blog/","blog",{"text":945,"config":946},"Community",{"href":947,"dataGaName":948,"dataGaLocation":702},"/community/","community",{"text":950,"config":951},"Kunden",{"href":952,"dataGaName":953,"dataGaLocation":702},"/de-de/customers/","customers",{"text":955,"config":956},"Partner",{"href":957,"dataGaName":958,"dataGaLocation":702},"/de-de/partners/","partners",{"text":960,"config":961},"Veranstaltungen",{"href":962,"dataGaName":963,"dataGaLocation":702},"/events/","events",{"config":965,"title":966,"text":967,"link":968},{"background":796,"textColor":797},"Neues bei GitLab","Über die neuesten Funktionen und Verbesserungen auf dem Laufenden bleiben.",{"text":969,"config":970},"Aktuelle Nachrichten",{"href":971,"dataGaName":972,"dataGaLocation":702},"/de-de/whats-new/","whats new",{"text":974,"config":975,"menu":977},"Unternehmen",{"dataNavLevelOne":976},"company",{"type":724,"columns":978},[979],{"items":980},[981,986,992,997,1002,1007,1012,1017,1022],{"text":982,"config":983},"Über",{"href":984,"dataGaName":985,"dataGaLocation":702},"/de-de/company/","about",{"text":987,"config":988,"footerGa":991},"Karriere",{"href":989,"dataGaName":990,"dataGaLocation":702},"/jobs/","jobs",{"dataGaName":990},{"text":993,"config":994},"Presse",{"href":995,"dataGaName":996,"dataGaLocation":702},"/press/","press",{"text":998,"config":999},"Handbuch",{"href":1000,"dataGaName":1001,"dataGaLocation":702},"https://handbook.gitlab.com/","handbook",{"text":1003,"config":1004},"Geschäftsführung",{"href":1005,"dataGaName":1006,"dataGaLocation":702},"/company/team/e-group/","leadership",{"text":1008,"config":1009},"Investor Relations",{"href":1010,"dataGaName":1011,"dataGaLocation":702},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1013,"config":1014},"Trust Center",{"href":1015,"dataGaName":1016,"dataGaLocation":702},"/de-de/security/","trust center",{"text":1018,"config":1019},"AI Transparency Center",{"href":1020,"dataGaName":1021,"dataGaLocation":702},"/de-de/ai-transparency-center/","ai transparency center",{"text":1023,"config":1024},"Newsletter",{"href":1025,"dataGaName":1026,"dataGaLocation":702},"/company/contact/#contact-forms","newsletter",{"text":1028,"config":1029,"menu":1030},"Kontakt",{"dataNavLevelOne":976},{"type":724,"columns":1031},[1032],{"items":1033},[1034,1039,1044],{"text":1035,"config":1036},"Vertrieb kontaktieren",{"href":1037,"dataGaName":1038,"dataGaLocation":702},"/de-de/sales/","talk to sales",{"text":1040,"config":1041},"Support-Portal",{"href":1042,"dataGaName":1043,"dataGaLocation":702},"https://support.gitlab.com/hc/en-us","support portal",{"text":1045,"config":1046},"Kundenportal",{"href":1047,"dataGaName":1048,"dataGaLocation":702},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1050,"login":1051,"suggestions":1058},"Schließen",{"text":1052,"link":1053},"Um Repositorys und Projekte zu durchsuchen, melde dich an bei",{"text":1054,"config":1055},"gitlab.com",{"href":716,"dataGaName":1056,"dataGaLocation":1057},"search login","search",{"text":1059,"default":1060},"Vorschläge",[1061,1064,1068,1070,1075,1080],{"text":1062,"config":1063},"GitLab Duo Agent Platform",{"href":782,"dataGaName":1062,"dataGaLocation":1057},{"text":1065,"config":1066},"Codevorschläge (KI)",{"href":782,"dataGaName":1067,"dataGaLocation":1057},"Code Suggestions (AI)",{"text":734,"config":1069},{"href":736,"dataGaName":734,"dataGaLocation":1057},{"text":1071,"config":1072},"GitLab auf AWS",{"href":1073,"dataGaName":1074,"dataGaLocation":1057},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":1076,"config":1077},"GitLab auf Google Cloud",{"href":1078,"dataGaName":1079,"dataGaLocation":1057},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":1081,"config":1082},"Warum GitLab?",{"href":803,"dataGaName":1083,"dataGaLocation":1057},"Why GitLab?",{"freeTrial":1085,"mobileIcon":1090,"desktopIcon":1095,"secondaryButton":1098},{"text":1086,"config":1087},"Kostenlos testen",{"href":1088,"dataGaName":707,"dataGaLocation":1089},"https://gitlab.com/-/trials/new/","nav",{"altText":1091,"config":1092},"GitLab-Symbol",{"src":1093,"dataGaName":1094,"dataGaLocation":1089},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1091,"config":1096},{"src":1097,"dataGaName":1094,"dataGaLocation":1089},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":1099,"config":1100},"Erste Schritte",{"href":1101,"dataGaName":1102,"dataGaLocation":1089},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de/get-started/","get started",{"freeTrial":1104,"mobileIcon":1108,"desktopIcon":1110},{"text":1105,"config":1106},"Mehr über GitLab Duo erfahren",{"href":782,"dataGaName":1107,"dataGaLocation":1089},"gitlab duo",{"altText":1091,"config":1109},{"src":1093,"dataGaName":1094,"dataGaLocation":1089},{"altText":1091,"config":1111},{"src":1097,"dataGaName":1094,"dataGaLocation":1089},{"button":1113,"mobileIcon":1118,"desktopIcon":1120},{"text":1114,"config":1115},"/Option",{"href":1116,"dataGaName":1117,"dataGaLocation":1089},"#contact","switch",{"altText":1091,"config":1119},{"src":1093,"dataGaName":1094,"dataGaLocation":1089},{"altText":1091,"config":1121},{"src":1122,"dataGaName":1094,"dataGaLocation":1089},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1124,"mobileIcon":1129,"desktopIcon":1131},{"text":1125,"config":1126},"Zurück zur Preisübersicht",{"href":896,"dataGaName":1127,"dataGaLocation":1089,"icon":1128},"back to pricing","GoBack",{"altText":1091,"config":1130},{"src":1093,"dataGaName":1094,"dataGaLocation":1089},{"altText":1091,"config":1132},{"src":1097,"dataGaName":1094,"dataGaLocation":1089},{"title":1134,"button":1135,"config":1138},"GitLab Orbit ist da: die Kontextebene für KI-Agenten",{"text":801,"config":1136},{"href":787,"dataGaName":1137,"dataGaLocation":702},"orbit",{"layout":1139,"disabled":688},"release",{"data":1141},{"text":1142,"source":1143,"edit":1149,"contribute":1154,"config":1159,"items":1164,"minimal":1386},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":1144,"config":1145},"Quelltext der Seite anzeigen",{"href":1146,"dataGaName":1147,"dataGaLocation":1148},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1150,"config":1151},"Diese Seite bearbeiten",{"href":1152,"dataGaName":1153,"dataGaLocation":1148},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1155,"config":1156},"Beteilige dich",{"href":1157,"dataGaName":1158,"dataGaLocation":1148},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1160,"facebook":1161,"youtube":1162,"linkedin":1163},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1165,1210,1268,1311,1353],{"title":894,"links":1166,"subMenu":1181},[1167,1171,1176],{"text":1168,"config":1169},"Tarife anzeigen",{"href":896,"dataGaName":1170,"dataGaLocation":1148},"view plans",{"text":1172,"config":1173},"Vorteile von Premium",{"href":1174,"dataGaName":1175,"dataGaLocation":1148},"/de-de/pricing/premium/","why premium",{"text":1177,"config":1178},"Vorteile von Ultimate",{"href":1179,"dataGaName":1180,"dataGaLocation":1148},"/de-de/pricing/ultimate/","why ultimate",[1182],{"title":1028,"links":1183},[1184,1186,1188,1190,1195,1200,1205],{"text":1035,"config":1185},{"href":1037,"dataGaName":712,"dataGaLocation":1148},{"text":1040,"config":1187},{"href":1042,"dataGaName":1043,"dataGaLocation":1148},{"text":1045,"config":1189},{"href":1047,"dataGaName":1048,"dataGaLocation":1148},{"text":1191,"config":1192},"Status",{"href":1193,"dataGaName":1194,"dataGaLocation":1148},"https://status.gitlab.com/","status",{"text":1196,"config":1197},"Nutzungsbedingungen",{"href":1198,"dataGaName":1199,"dataGaLocation":1148},"/terms/","terms of use",{"text":1201,"config":1202},"Datenschutzerklärung",{"href":1203,"dataGaName":1204,"dataGaLocation":1148},"/de-de/privacy/","privacy statement",{"text":1206,"config":1207},"Cookie-Einstellungen",{"dataGaName":1208,"dataGaLocation":1148,"id":1209,"isOneTrustButton":287},"cookie preferences","ot-sdk-btn",{"title":720,"links":1211,"subMenu":1225},[1212,1215,1217,1219,1221,1223],{"text":1213,"config":1214},"Plattform entdecken",{"href":728,"dataGaName":722,"dataGaLocation":1148},{"text":780,"config":1216},{"href":782,"dataGaName":783,"dataGaLocation":1148},{"text":734,"config":1218},{"href":736,"dataGaName":737,"dataGaLocation":1148},{"text":785,"config":1220},{"href":787,"dataGaName":788,"dataGaLocation":1148},{"text":767,"config":1222},{"href":769,"dataGaName":770,"dataGaLocation":1148},{"text":798,"config":1224},{"href":803,"dataGaName":804,"dataGaLocation":1148},[1226],{"title":1227,"links":1228},"Themen",[1229,1233,1238,1243,1248,1253,1258,1263],{"text":734,"config":1230},{"href":1231,"dataGaName":1232,"dataGaLocation":1148},"/de-de/topics/ci-cd/","cicd",{"text":1234,"config":1235},"GitOps",{"href":1236,"dataGaName":1237,"dataGaLocation":1148},"/de-de/topics/gitops/","gitops",{"text":1239,"config":1240},"DevOps",{"href":1241,"dataGaName":1242,"dataGaLocation":1148},"/de-de/topics/devops/","devops",{"text":1244,"config":1245},"Versionskontrolle",{"href":1246,"dataGaName":1247,"dataGaLocation":1148},"/de-de/topics/version-control/","version control",{"text":1249,"config":1250},"DevSecOps",{"href":1251,"dataGaName":1252,"dataGaLocation":1148},"/de-de/topics/devsecops/","devsecops",{"text":1254,"config":1255},"Cloud-nativ",{"href":1256,"dataGaName":1257,"dataGaLocation":1148},"/de-de/topics/cloud-native/","cloud native",{"text":1259,"config":1260},"KI für das Programmieren",{"href":1261,"dataGaName":1262,"dataGaLocation":1148},"/de-de/topics/devops/ai-for-coding/","ai for coding",{"text":1264,"config":1265},"Agentische KI",{"href":1266,"dataGaName":1267,"dataGaLocation":1148},"/de-de/topics/agentic-ai/","agentic ai",{"title":806,"links":1269},[1270,1272,1274,1276,1278,1280,1282,1284,1286,1288,1291,1294,1296,1299,1303,1307],{"text":819,"config":1271},{"href":821,"dataGaName":822,"dataGaLocation":1148},{"text":824,"config":1273},{"href":826,"dataGaName":827,"dataGaLocation":1148},{"text":829,"config":1275},{"href":831,"dataGaName":832,"dataGaLocation":1148},{"text":855,"config":1277},{"href":857,"dataGaName":858,"dataGaLocation":1148},{"text":860,"config":1279},{"href":862,"dataGaName":863,"dataGaLocation":1148},{"text":865,"config":1281},{"href":867,"dataGaName":868,"dataGaLocation":1148},{"text":870,"config":1283},{"href":872,"dataGaName":873,"dataGaLocation":1148},{"text":875,"config":1285},{"href":877,"dataGaName":878,"dataGaLocation":1148},{"text":880,"config":1287},{"href":882,"dataGaName":883,"dataGaLocation":1148},{"text":1289,"config":1290},"Enterprise",{"href":839,"dataGaName":840,"dataGaLocation":1148},{"text":1292,"config":1293},"Kleinunternehmen",{"href":844,"dataGaName":845,"dataGaLocation":1148},{"text":847,"config":1295},{"href":849,"dataGaName":850,"dataGaLocation":1148},{"text":1234,"config":1297},{"href":1298,"dataGaName":1237,"dataGaLocation":1148},"/de-de/solutions/gitops/",{"text":1300,"config":1301},"Analyse der Softwarezusammensetzung (SCA)",{"href":774,"dataGaName":1302,"dataGaLocation":1148},"software composition analysis",{"text":1304,"config":1305},"Wertstrommanagement",{"href":792,"dataGaName":1306,"dataGaLocation":1148},"value stream management",{"text":1308,"config":1309},"Alle Lösungen",{"href":813,"dataGaName":1310,"dataGaLocation":1148},"all solutions",{"title":899,"links":1312},[1313,1318,1323,1325,1327,1329,1331,1333,1335,1337,1340,1342,1344,1346,1349],{"text":1314,"config":1315},"Installieren",{"href":1316,"dataGaName":1317,"dataGaLocation":1148},"/de-de/install/","install",{"text":1319,"config":1320},"Kurzanleitungen",{"href":1321,"dataGaName":1322,"dataGaLocation":1148},"/de-de/get-started/","quick setup checklists",{"text":912,"config":1324},{"href":914,"dataGaName":915,"dataGaLocation":1148},{"text":917,"config":1326},{"href":919,"dataGaName":920,"dataGaLocation":1148},{"text":922,"config":1328},{"href":924,"dataGaName":925,"dataGaLocation":1148},{"text":927,"config":1330},{"href":929,"dataGaName":930,"dataGaLocation":1148},{"text":932,"config":1332},{"href":934,"dataGaName":935,"dataGaLocation":1148},{"text":940,"config":1334},{"href":942,"dataGaName":943,"dataGaLocation":1148},{"text":945,"config":1336},{"href":947,"dataGaName":948,"dataGaLocation":1148},{"text":1338,"config":1339},"Kund(inn)en",{"href":952,"dataGaName":953,"dataGaLocation":1148},{"text":955,"config":1341},{"href":957,"dataGaName":958,"dataGaLocation":1148},{"text":960,"config":1343},{"href":962,"dataGaName":963,"dataGaLocation":1148},{"text":1023,"config":1345},{"href":1025,"dataGaName":1026,"dataGaLocation":1148},{"text":1347,"config":1348},"Neuerungen",{"href":971,"dataGaName":972,"dataGaLocation":1148},{"text":1350,"config":1351},"Alle Ressourcen",{"href":906,"dataGaName":1352,"dataGaLocation":1148},"all resources",{"title":974,"links":1354},[1355,1357,1359,1361,1363,1365,1367,1369,1371,1376,1381],{"text":982,"config":1356},{"href":984,"dataGaName":976,"dataGaLocation":1148},{"text":987,"config":1358},{"href":989,"dataGaName":990,"dataGaLocation":1148},{"text":993,"config":1360},{"href":995,"dataGaName":996,"dataGaLocation":1148},{"text":998,"config":1362},{"href":1000,"dataGaName":1001,"dataGaLocation":1148},{"text":1003,"config":1364},{"href":1005,"dataGaName":1006,"dataGaLocation":1148},{"text":1008,"config":1366},{"href":1010,"dataGaName":1011,"dataGaLocation":1148},{"text":1013,"config":1368},{"href":1015,"dataGaName":1016,"dataGaLocation":1148},{"text":1018,"config":1370},{"href":1020,"dataGaName":1021,"dataGaLocation":1148},{"text":1372,"config":1373},"Nachhaltigkeit",{"href":1374,"dataGaName":1375,"dataGaLocation":1148},"/sustainability/","Sustainability",{"text":1377,"config":1378},"Vielfalt, Inklusion und Zugehörigkeit",{"href":1379,"dataGaName":1380,"dataGaLocation":1148},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1382,"config":1383},"Transparenzerklärung zu moderner Sklaverei",{"href":1384,"dataGaName":1385,"dataGaLocation":1148},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1387},[1388,1391,1394],{"text":1389,"config":1390},"Terms",{"href":1198,"dataGaName":1199,"dataGaLocation":1148},{"text":1392,"config":1393},"Cookies",{"dataGaName":1208,"dataGaLocation":1148,"id":1209,"isOneTrustButton":287},{"text":1395,"config":1396},"Datenschutz",{"href":1203,"dataGaName":1204,"dataGaLocation":1148},[1398,1412],{"id":1399,"title":7,"body":682,"config":1400,"content":1403,"description":682,"extension":1406,"meta":1407,"navigation":287,"path":1408,"seo":1409,"stem":1410,"__hash__":1411},"blogAuthors/en-us/blog/authors/daniel-abeles.yml",{"template":1401,"gitlabHandle":1402},"BlogAuthor","dabeles",{"name":7,"config":1404},{"headshot":1405},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1786473980/kjzctsiwvfc6afimsdtc.jpg","yml",{},"/en-us/blog/authors/daniel-abeles",{},"en-us/blog/authors/daniel-abeles","9j7gS6WI8857OrOR0VcnHZiFLXpZpnKFA3tgPdDU5hw",{"id":1413,"title":8,"body":682,"config":1414,"content":1415,"description":682,"extension":1406,"meta":1418,"navigation":287,"path":1419,"seo":1420,"stem":1421,"__hash__":1422},"blogAuthors/en-us/blog/authors/abisheik-magesh.yml",{"template":1401},{"name":8,"config":1416},{"headshot":1417},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1787000354/gmgyvfesrvwdlvt52gdw.png",{},"/en-us/blog/authors/abisheik-magesh",{},"en-us/blog/authors/abisheik-magesh","kPev_Acm8MB5tgKMnU_Rkfq1sl42e8DixU6iNMXXfxI",[1424,1430,1436],{"title":1425,"description":1426,"heroImage":683,"category":678,"date":1427,"authors":1428,"slug":1429,"externalUrl":682},"Kritische Codeausführung in DeepSeek-Reasonix mittels präparierter Git-Konfiguration","Warum Coding-Agenten der Git-Konfiguration fremder Repositorys nicht vertrauen sollten, zeigt eine kritische Lücke in DeepSeek-Reasonix.","2026-10-02",[8,7],"deepseek-reasonix-vulnerability-discovered",{"title":1431,"description":1432,"heroImage":683,"category":678,"date":1433,"authors":1434,"slug":1435,"externalUrl":682},"Kritische Remote Code Execution in der weit verbreiteten Node.js-Sandbox vm2","GitLabs Threat Research Group hat einen kritischen Sandbox Escape in vm2 gefunden – ausgelöst durch die dokumentierte Konfiguration der Bibliothek selbst.","2026-09-02",[8,7],"critical-remote-code-execution-in-vm2",{"title":1437,"description":1438,"heroImage":1439,"category":678,"date":1440,"authors":1441,"slug":1443,"externalUrl":682},"Detection-Tests mit GitLab CI/CD und Duo automatisieren","Wie das Signals-Engineering-Team von GitLab das WATCH-Framework gebaut hat, um die eigene Security-Monitoring-Pipeline fortlaufend zu validieren.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1772195014/ooezwusxjl1f7ijfmbvj.png","2026-08-14",[1442],"Evan Baltman","automated-detection-testing-framework",{"header":1445,"text":1446,"button":1450,"disclaimer":1453},"Kostenlose 30-tägige\n\nGitLab-Testversion starten\n",[1447,1448,1449],"GitLab Duo Agent Platform nutzen","Unsere fortschrittlichsten Funktionen ausprobieren","Komplexe Aufgaben mit KI automatisieren",{"text":1086,"config":1451},{"href":1452,"dataGaName":707,"dataGaLocation":943},"https://gitlab.com/-/trials/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/de-de/blog/","Keine Kreditkarte erforderlich.",{"header":1455,"blurb":1456,"button":1457,"secondaryButton":1462},"Beginne noch heute, schneller zu entwickeln","Entdecke, was dein Team mit der intelligenten Orchestrierungsplattform für DevSecOps erreichen kann.\n",{"text":1458,"config":1459},"Kostenlosen Test starten",{"href":1460,"dataGaName":707,"dataGaLocation":1461},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/de-de/","feature",{"text":1035,"config":1463},{"href":1037,"dataGaName":712,"dataGaLocation":1461},1791944909746]