[{"data":1,"prerenderedAt":722},["ShallowReactive",2],{"/de-de/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities/":3,"navigation-de-de":43,"banner-de-de":462,"footer-de-de":475,"Michael Friedrich-Alana Bellucci":684,"next-steps-de-de":707},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"seo":8,"content":17,"config":32,"_id":36,"_type":37,"title":38,"_source":39,"_file":40,"_stem":41,"_extension":42},"/de-de/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities","blog",false,"",{"ogTitle":9,"schema":10,"ogImage":11,"ogDescription":12,"ogSiteName":13,"noIndex":6,"ogType":14,"ogUrl":15,"title":9,"canonicalUrls":15,"description":16},"GitLab Duo: KI zur Behebung von Sicherheitslücken nutzen","\n                        {\n        \"@context\": \"https://schema.org\",\n        \"@type\": \"Article\",\n        \"headline\": \"Die Entwicklung von GitLab Duo: KI zur Behebung von Sicherheitslücken nutzen \",\n        \"author\": [{\"@type\":\"Person\",\"name\":\"Michael Friedrich\"},{\"@type\":\"Person\",\"name\":\"Alana Bellucci\"}],\n        \"datePublished\": \"2024-07-15\",\n      }\n                  ","https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098106/Blog/Hero%20Images/Blog/Hero%20Images/blog-hero-banner-1-0178-820x470-fy25_7JlF3WlEkswGQbcTe8DOTB_1750098106040.png","Dieses Tutorial zeigt, wie dir die GitLab-Duo-Funktionen zur Erläuterung und Behebung von Sicherheitslücken zusammen mit unseren anderen KI-basierten Funktionen helfen können, Sicherheitslücken schnell zu beheben.","https://about.gitlab.com","article","https://about.gitlab.com/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities","Dieses Tutorial zeigt, wie dir die GitLab-Duo-Funktionen zur Erläuterung und Behebung von Sicherheitslücken zusammen mit unseren anderen KI-basierten Funktionen helfen können, Sicherheitslücken zu beheben.",{"heroImage":11,"body":18,"authors":19,"updatedDate":22,"date":23,"title":24,"tags":25,"description":12,"category":31},"Du hast gerade eine neue Stelle angetreten, und gleich an deinem ersten Tag\ngibt es einen schwerwiegenden Vorfall in der Produktion, bei dem alle\nverfügbaren Arbeitskräfte benötigt werden. Eine Reihe kritischer neuer\nSicherheitslücken erfordert sofortige Aufmerksamkeit, Analyse,\nSchadensbegrenzung und Behebung. Aber wo genau fängst du mit deiner\nUntersuchung an?\n\n\nErfahre, wie du mit den GitLab-Duo-Funktionen zur Erläuterung von Sicherheitslücken und Behebung von Sicherheitslücken zusammen mit anderen KI-basierten Funktionen innerhalb weniger Minuten mit der Behebung von Sicherheitslücken beginnen kannst. Anhand eines praktischen Beispiels erfährst du, wie du von der KI-basierten Unterstützung bei der Analyse und Erläuterung von Sicherheitslücken profitieren kannst. Zusätzliche Abhilfemaßnahmen stehen in Form von KI-generierten Codekorrekturen in MRs im Vordergrund, um Sicherheitslücken schneller zu beheben.\n\n\n> Starte [eine kostenlose Testversion von GitLab Duo](https://about.gitlab.com/gitlab-duo/#free-trial), um diese leistungsstarken Vorteile bei der Behebung von Sicherheitslücken auch in deinem Unternehmen zu nutzen.\n\n\n## So gehst du vor: Analyse\n\n\nDer erste Schritt besteht darin, die Auswirkungen und den Schweregrad der Sicherheitslücke zu analysieren. Öffne die GitLab-Benutzeroberfläche und navigiere zum [Sicherheitslückenbericht](https://docs.gitlab.com/ee/user/application_security/vulnerability_report/) im Menü `Schützen > Sicherheitslückenbericht`. Filtere die Liste der Sicherheitslücken nach `SAST` und identifiziere die kritischsten Sicherheitslücken, an denen du arbeiten musst.\n\n\n![Übersicht über Sicherheitslückenberichte](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/vulnerability_reports_overview_aHR0cHM6_1750098116056.png)\n\n\nDie Ergebnisse des SAST-Scanners werden in der Detailansicht zusammengefasst und mit dem Quellcode verknüpft. Sie enthalten Details aus öffentlich zugänglichen Sicherheitshinweisen. Für Entwickler(innen) ist es oft schwierig, direkt aus dem Sicherheitsbericht heraus mit der Analyse zu beginnen, es sei denn, sie kennen den Umfang des Angriffs, die technischen Details und die Sicherheitslücken genau.\n\n\n## Verstehen und Entschärfen mit der Erläuterung von Sicherheitslücken\n\n\nEs ist unerlässlich, dass du die Sicherheitslücke verstehst und weißt, wie du sie am besten und effizientesten beheben kannst. Die Korrekturen dürfen bestehende Funktionen nicht beeinträchtigen. Falls doch, ist eine Besprechung mit den zuständigen Betreuer(inne)n und Product Ownern mit einer Zusammenfassung und möglichen Abhilfemaßnahmen erforderlich. Code, den ein(e) ehemalige(r) Mitarbeiter(in) geschrieben hat, oder Code, für den es keine Tests gibt, kann die Planung eines Fixes noch schwieriger machen.\n\n\nDie KI-basierte Erläuterung von Sicherheitslücken bietet eine Zusammenfassung, wie ein(e) Angreifer(in) die Sicherheitslücke ausnutzen könnte, und liefert weitere Erklärungen zu den Auswirkungen und möglichen Abhilfemaßnahmen.\n\n\nDas folgende Beispiel zeigt eine OS-Command-Injection-Sicherheitslücke unter Verwendung dieses Codeschnipsels:\n\n\n```php\n\n\u003C?php \n\n\n// Read variable name from GET request\n\n$name = $_GET['name'];\n\n\n// Use the variable name to call eval and print its value \n\neval('echo $' . $name . ';');\n\n```\n\n\nDer Sicherheitslückenbericht ist nicht sehr detailliert und setzt voraus, dass du den gesamten Kontext und die Auswirkungen verstehst. Wähle oben rechts `Sicherheitslücke erläutern`, um den GitLab Duo Chat mit einem vordefinierten Prompt zu öffnen. Dieser bietet eine zusätzliche Zusammenfassung der Sicherheitslücke, eine Beschreibung, wie die Sicherheitslücke ausgenutzt werden kann, und einen Lösungsvorschlag.\n\n\n![Unsachgemäße Neutralisierung von\n\nspeziellen Elementen, die in einem Betriebssystembefehl verwendet werden\n\n(„OS Command Injection“) ](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image9_aHR0cHM6_1750098116057.png)\n\n\n### Erläuterung von Sicherheitslücken in einem Gespräch mit Kontext\n\n\nDu wirst auch eine Änderung in der Benutzeroberfläche sehen: Das vorherige Overlay der Erläuterung von Sicherheitslücken wurde durch einen GitLab-Duo-Chat-Workflow ersetzt. Manchmal benötigt eine komplexe Sicherheitslücke mehrere Abhilfemaßnahmen oder sie führt zu unklaren Quellcodepfaden.\n\n\nDu kannst zum Quellcodebaum navigieren und mit demselben Chat-Kontext fortfahren, um dir den Code erläutern zu lassen, ihn zu reparieren, zu überarbeiten und zu testen. \n\n\nProbieren wir den kompletten Workflow anhand eines Beispiels in C aus, bei dem die Sicherheitsscans einen Pufferüberlauf entdeckt haben.\n\n\n1. Öffne die Detailansicht der Sicherheitslücke und wähle oben rechts auf der Schaltfläche „Sicherheitslücke erläutern“. Dies öffnet den Chat-Prompt mit einer Zusammenfassung des Problems, potenziellen Angriffsvektoren und einem Lösungsvorschlag.\n\n\n![KI für Sicherheitslücken – Bild 4](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image11_aHR0cHM6_1750098116059.png)\n\n\n2. Überprüfe den Lösungsvorschlag und bitte Duo Chat in einem Folge-Prompt, dir alternative Lösungsmöglichkeiten anzuzeigen, indem du den folgenden Text eingibst: `Can you show an alternative fix using a different function`. Der Sinn dahinter ist, etwas über Alternativen zur Funktion `strcpy()` zu erfahren, die sicherer zu verwenden sind.\n\n\n![KI für Sicherheitslücken – Bild 3](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image4_aHR0cHM6_1750098116060.png)\n\n\n3. Duo Chat bietet im folgenden Beispiel eine alternative Lösung mit `strlcpy()`. Die Funktion kopiert nur so viele Zeichen, wie in der Zielzeichenfolge erlaubt sind, und beendet die Zeichenfolge immer mit Null. Sie gibt auch die Länge der Quellzeichenfolge zurück, um festzustellen, ob die Zeichenfolge abgeschnitten wurde.\n\n\n![KI für Sicherheitslücken – Bild 5](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image10_aHR0cHM6_1750098116062.png)\n\n\n4. Klicke auf die URL der Datei `Location`, um zur Quellcodeansicht zu gelangen. Öffne Duo Chat erneut und vergewissere dich, dass der vorherige Kontext zur Erläuterung der Sicherheitslücke noch vorhanden ist. Als Nächstes möchten wir Tests hinzufügen, bevor wir mit einem Lösungsvorschlag fortfahren. So vermeiden wir, dass Funktionen kaputt gehen oder Regressionen eingeführt werden. Verwende zum Beispiel den folgenden Chat-Prompt: `Based on the vulnerability context and opened source code, how would you add tests for it?`.\n\n\n![KI für Sicherheitslücken – Bild 7](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image8_aHR0cHM6_1750098116063.png)\n\n\n5. Nachdem du Tests erstellt hast (und angenommen, sie wurden jetzt hinzugefügt), kannst du Duo Chat mit dem Prompt `Can you refactor the source code too?` in der gleichen Sitzung auch darum bitten, den Quellcode zu überarbeiten.\n\n\n![KI für Sicherheitslücken – Bild 6](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image2_aHR0cHM6_1750098116063.png)\n\n\nDer Workflow zeigt dir, wie du Sicherheitslücken analysierst, verstehst, entschärfst, alternative Ansätze findest, Tests hinzufügst und sogar Refactoring durchführst. \n\n\nDu kannst diesen Weg mit Duo Chat fortsetzen und dann in die Web IDE wechseln, um den Quellcode zu ändern, nachdem du gelernt hast, wie es geht. Zu den weiteren fortlaufenden Workflows gehören das Committen von Änderungen und das Auslösen der CI/CD-Pipeline und von Sicherheitsscans für den gesamten DevSecOps-Lebenszyklus. \n\n\n## Beheben mit KI-unterstützter Behebung von Sicherheitslücken\n\n\nUm eine Sicherheitslücke zu verstehen und zu beheben, sind immer noch Entwicklerfähigkeiten notwendig, um in einem neuen Merge Request eine Lösung für das Problem zu erstellen, Pipelines auszuführen und Sicherheitsscans durchzuführen. Es kann auch erforderlich sein, die Fixes in einer Staging-Umgebung bereitzustellen und über einen längeren Zeitraum zu testen.\n\n\nDie KI kann dir dabei helfen, einen Lösungsvorschlag auf der Grundlage des bereitgestellten Kontexts der Sicherheitslücke und des Quellcodes zu generieren.\n\n\nTipp: Denke an die ärgerlichste Sicherheitslücke, die du in deiner Karriere bisher beheben musstest, und erstelle das Anwendungsbeispiel erneut für GitLab Duo. Die [Mitre CWE Top 25 der gefährlichsten Software-Sicherheitslücken](https://cwe.mitre.org/top25/archive/2023/2023_top25_list.html) bietet ebenfalls einen guten Ausgangspunkt.  \n\n\nDas folgende Beispiel implementiert [CWE-328: Use of a weak hash function (Verwendung einer schwachen Hash-Funktion)](https://cwe.mitre.org/data/definitions/328.html) unter Verwendung von `md5`. Die Sicherheitslücke wird von [SAST-Scannern](https://docs.gitlab.com/ee/user/application_security/sast/) korrekt identifiziert. \n\n\n```python\n\nimport hashlib\n\n\nclass User:\n    def __init__(self, username, password):\n        self.username = username\n        self.password = password\n\n    def set_password(self, password):\n        self.password = hashlib.md5(password.encode()).hexdigest()\n```\n\n\n![KI für Sicherheitslücken – Bild 8](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image7_aHR0cHM6_1750098116064.png)\n\n\nKlicke oben rechts auf die Schaltfläche `Mit Merge Request lösen`.  Dies öffnet einen MR, der KI verwendet, um eine Lösung vorzuschlagen. Eine mögliche Lösung für diese Sicherheitslücke könnte die Verwendung einer anderen Hash-Funktion sein.\n\n\n![KI für Sicherheitslücken – Bild 9](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image1_aHR0cHM6_1750098116065.png)\n\n\nEin weiteres häufiges Beispiel für eine Sicherheitslücke ist die Nichtüberprüfung von Funktionsfehlercodes oder möglichen Exceptions. Die folgenden C-Codeschnipsel implementieren ein Beispiel für Timing-Angriffe auf Dateivorgänge mit [CWE-362](https://cwe.mitre.org/data/definitions/362.html) für die Aufrufe `fopen()` und `chmod()`. \n\n\n```c\n\n#include \u003Cstdio.h>\n\n#include \u003Cstring.h>\n\n#include \u003Csys/mman.h>\n\n#include \u003Csys/stat.h>\n\n#include \u003Cunistd.h>\n\n\nint main(int argc, char **argv) {\n\n    // File operations\n    char *fname = \"gitlab.keksi\";\n\n    FILE *fp;\n    fp = fopen(fname, \"r\");\n    fprintf(fp, \"Hello from GitLab Duo Vulnerability Resolution Challenge\");\n    fclose(fp);\n\n    // Potential chmod() timing attacks    \n\n    // Make the file world readable\n    chmod(fname, S_IRWXU|S_IRWXG|S_IRWXO);\n\n    return 0;\n}\n\n```\n\n\nDer SAST-Bericht für `chmod()` kann wie folgt aussehen: \n\n\n![KI für Sicherheitslücken – Bild 10](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image6_aHR0cHM6_1750098116065.png)\n\n\nDer vorgeschlagene Merge Request für `chmod()` beinhaltet die Fehlerbehandlung. Zusätzlich wird ein weiteres potenzielles Problem behoben, durch das Dateien öffentlich beschreibbar sind, indem die Berechtigungen von `777` auf `600` geändert werden.\n\n\n![KI für Sicherheitslücken – Bild 11](https://res.cloudinary.com/about-gitlab-com/image/upload/v1750098116/Blog/Content%20Images/Blog/Content%20Images/image3_aHR0cHM6_1750098116066.png)\n\n\n> Probiere diese asynchrone Übung aus: Finde, analysiere und behebe die Sicherheitslücke für die Funktion `fopen()`.\n\n\n## Mehr KI-Unterstützung von GitLab Duo erforderlich\n\n\nOft lässt sich ein Sicherheitsproblem mit einer schnellen Lösung oder einem Workaround beheben, der den Entwicklungsteams Zeit gibt, eine längerfristige Lösung zu diskutieren und zu planen. In anderen Fällen wird das Problem komplexer und erfordert die Deaktivierung von Funktions-APIs oder die Behebung von Problemen der Firewall, bis eine angemessene Lösung in die Produktion eingeführt werden kann.\n\n\nGitLab Duo bietet zusätzliche KI-basierte Funktionen, die bei der Lösung dieser Probleme helfen können. \n\n\n**Codeerläuterung:** Als Entwickler(in) oder Sicherheitsingenieur(in) ist es wichtig, dass du dich auf deine Änderungen verlassen kannst. In der IDE kannst du die [Funktion „Codeerläuterung“](https://docs.gitlab.com/ee/user/gitlab_duo_chat/examples.html#explain-code-in-the-ide) verwenden, um die von der KI vorgeschlagene Lösung für die Sicherheitslücke besser zu verstehen. So ist sichergestellt, dass du genau weißt, welche Anpassungen vorgenommen wurden und warum.\n\n\n**Grundursachenanalyse:** Wenn die Lösung deine Pipeline beschädigt, kannst du die [Grundursachenanalyse](https://about.gitlab.com/blog/developing-gitlab-duo-blending-ai-and-root-cause-analysis-to-fix-ci-cd/) verwenden. Dieses Tool hilft dir bei der Identifizierung des zugrunde liegenden Problems und erklärt es dir, damit du es effektiv angehen kannst. Nachdem du die erforderlichen Korrekturen vorgenommen hast, kannst du die Tests erneut ausführen, um eine erfolgreiche Lösung zu gewährleisten.\n\n\n**Refactoring:** Auch wenn die Sicherheitslücke behoben wurde, lohnt es sich zu überlegen, ob der Code nicht sicherer geschrieben werden kann. In der IDE kannst du GitLab Duo Chat öffnen und die [Refactoring-Aktion](https://docs.gitlab.com/ee/user/gitlab_duo_chat/examples.html#refactor-code-in-the-ide) verwenden, um alternative, sicherere Möglichkeiten zum Schreiben deines Codes zu finden. Dieser proaktive Ansatz trägt zur Aufrechterhaltung einer robusten und sicheren Codebase bei.\n\n\nMit diesen Funktionen von GitLab Duo kannst du Sicherheitslücken selbstbewusst erkennen und beheben und so sicherstellen, dass dein Code sicher und effizient bleibt.\n\n\n## Wie geht es weiter?\n\n\nWir planen, sowohl die Erläuterung von Sicherheitslücken als auch die Behebung von Sicherheitslücken „nach links“ zu verschieben, indem wir sie direkt in den MR-Prozess integrieren. Diese Integration stellt sicher, dass du Sicherheitslücken früher im Entwicklungszyklus angehen und beheben kannst, was deinen Workflow optimiert und die Codesicherheit von Anfang an erhöht.\n\n\n## Erste Schritte mit GitLab Duo\n\n\nIn unserer [Dokumentation](https://docs.gitlab.com/ee/user/gitlab_duo/turn_on_off.html) findest du Informationen dazu, wie du die Funktion für unsere GitLab-Ultimate-Kund(inn)en aktivieren kannst. Außerdem sind die GitLab-Duo-Funktionen [Erläuterung von Sicherheitslücken](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#explaining-a-vulnerability) und [Behebung von Sicherheitslücken](https://docs.gitlab.com/ee/user/application_security/vulnerabilities/#vulnerability-resolution) bald in GitLab Self-Managed und GitLab Dedicated verfügbar.\n\n\nIn [der Blog-Serie „Entwicklung von GitLab Duo“](https://about.gitlab.com/blog/developing-gitlab-duo-series/) erfährst du regelmäßig, was es Neues in GitLab Duo gibt.\n\n\n> Starte [eine kostenlose Testversion von GitLab Duo](https://about.gitlab.com/gitlab-duo/#free-trial), um diese leistungsstarken Vorteile bei der Behebung von Sicherheitslücken auch in deinem Unternehmen zu nutzen!\n",[20,21],"Michael Friedrich","Alana Bellucci","2024-11-29","2024-07-15","Die Entwicklung von GitLab Duo: KI zur Behebung von Sicherheitslücken nutzen ",[26,27,28,29,30],"AI/ML","security","product","features","tutorial","ai-ml",{"slug":33,"featured":34,"template":35},"developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities",true,"BlogPost","content:de-de:blog:developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities.yml","yaml","Developing Gitlab Duo Use Ai To Remediate Security Vulnerabilities","content","de-de/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities.yml","de-de/blog/developing-gitlab-duo-use-ai-to-remediate-security-vulnerabilities","yml",{"_path":44,"_dir":45,"_draft":6,"_partial":6,"_locale":7,"data":46,"_id":458,"_type":37,"title":459,"_source":39,"_file":460,"_stem":461,"_extension":42},"/shared/de-de/main-navigation","de-de",{"logo":47,"freeTrial":52,"sales":57,"login":62,"items":67,"search":399,"minimal":435,"duo":449},{"config":48},{"href":49,"dataGaName":50,"dataGaLocation":51},"/de-de/","gitlab logo","header",{"text":53,"config":54},"Kostenlose Testversion anfordern",{"href":55,"dataGaName":56,"dataGaLocation":51},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":58,"config":59},"Vertrieb kontaktieren",{"href":60,"dataGaName":61,"dataGaLocation":51},"/de-de/sales/","sales",{"text":63,"config":64},"Anmelden",{"href":65,"dataGaName":66,"dataGaLocation":51},"https://gitlab.com/users/sign_in/","sign in",[68,112,210,215,320,380],{"text":69,"config":70,"cards":72,"footer":95},"Plattform",{"dataNavLevelOne":71},"platform",[73,79,87],{"title":69,"description":74,"link":75},"Die umfassendste KI-basierte DevSecOps-Plattform",{"text":76,"config":77},"Erkunde unsere Plattform",{"href":78,"dataGaName":71,"dataGaLocation":51},"/de-de/platform/",{"title":80,"description":81,"link":82},"GitLab Duo (KI)","Entwickle Software schneller mit KI in jeder Phase der Entwicklung",{"text":83,"config":84},"Lerne GitLab Duo kennen",{"href":85,"dataGaName":86,"dataGaLocation":51},"/de-de/gitlab-duo/","gitlab duo ai",{"title":88,"description":89,"link":90},"Gründe, die für GitLab sprechen","10 Gründe, warum Unternehmen sich für GitLab entscheiden",{"text":91,"config":92},"Mehr erfahren",{"href":93,"dataGaName":94,"dataGaLocation":51},"/de-de/why-gitlab/","why gitlab",{"title":96,"items":97},"Erste Schritte mit",[98,103,108],{"text":99,"config":100},"Platform Engineering",{"href":101,"dataGaName":102,"dataGaLocation":51},"/de-de/solutions/platform-engineering/","platform engineering",{"text":104,"config":105},"Entwicklererfahrung",{"href":106,"dataGaName":107,"dataGaLocation":51},"/de-de/developer-experience/","Developer experience",{"text":109,"config":110},"MLOps",{"href":111,"dataGaName":109,"dataGaLocation":51},"/de-de/topics/devops/the-role-of-ai-in-devops/",{"text":113,"left":34,"config":114,"link":116,"lists":120,"footer":192},"Produkt",{"dataNavLevelOne":115},"solutions",{"text":117,"config":118},"Alle Lösungen anzeigen",{"href":119,"dataGaName":115,"dataGaLocation":51},"/de-de/solutions/",[121,147,170],{"title":122,"description":123,"link":124,"items":129},"Automatisierung","CI/CD und Automatisierung zur Beschleunigung der Bereitstellung",{"config":125},{"icon":126,"href":127,"dataGaName":128,"dataGaLocation":51},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[130,134,138,143],{"text":131,"config":132},"CI/CD",{"href":133,"dataGaLocation":51,"dataGaName":131},"/de-de/solutions/continuous-integration/",{"text":135,"config":136},"KI-unterstützte Entwicklung",{"href":85,"dataGaLocation":51,"dataGaName":137},"AI assisted development",{"text":139,"config":140},"Quellcodeverwaltung",{"href":141,"dataGaLocation":51,"dataGaName":142},"/de-de/solutions/source-code-management/","Source Code Management",{"text":144,"config":145},"Automatisierte Softwarebereitstellung",{"href":127,"dataGaLocation":51,"dataGaName":146},"Automated software delivery",{"title":148,"description":149,"link":150,"items":155},"Sicherheit","Entwickle schneller, ohne die Sicherheit zu gefährden",{"config":151},{"href":152,"dataGaName":153,"dataGaLocation":51,"icon":154},"/de-de/solutions/security-compliance/","security and compliance","ShieldCheckLight",[156,161,166],{"text":157,"config":158},"Application Security Testing",{"href":159,"dataGaName":160,"dataGaLocation":51},"/solutions/application-security-testing/","Application security testing",{"text":162,"config":163},"Schutz der Software-Lieferkette",{"href":164,"dataGaLocation":51,"dataGaName":165},"/de-de/solutions/supply-chain/","Software supply chain security",{"text":167,"config":168},"Software Compliance",{"href":169,"dataGaName":167,"dataGaLocation":51},"/solutions/software-compliance/",{"title":171,"link":172,"items":177},"Bewertung",{"config":173},{"icon":174,"href":175,"dataGaName":176,"dataGaLocation":51},"DigitalTransformation","/de-de/solutions/visibility-measurement/","visibility and measurement",[178,182,187],{"text":179,"config":180},"Sichtbarkeit und Bewertung",{"href":175,"dataGaLocation":51,"dataGaName":181},"Visibility and Measurement",{"text":183,"config":184},"Wertstrommanagement",{"href":185,"dataGaLocation":51,"dataGaName":186},"/de-de/solutions/value-stream-management/","Value Stream Management",{"text":188,"config":189},"Analysen und Einblicke",{"href":190,"dataGaLocation":51,"dataGaName":191},"/de-de/solutions/analytics-and-insights/","Analytics and insights",{"title":193,"items":194},"GitLab für",[195,200,205],{"text":196,"config":197},"Enterprise",{"href":198,"dataGaLocation":51,"dataGaName":199},"/de-de/enterprise/","enterprise",{"text":201,"config":202},"Kleinunternehmen",{"href":203,"dataGaLocation":51,"dataGaName":204},"/de-de/small-business/","small business",{"text":206,"config":207},"den öffentlichen Sektor",{"href":208,"dataGaLocation":51,"dataGaName":209},"/de-de/solutions/public-sector/","public sector",{"text":211,"config":212},"Preise",{"href":213,"dataGaName":214,"dataGaLocation":51,"dataNavLevelOne":214},"/de-de/pricing/","pricing",{"text":216,"config":217,"link":219,"lists":223,"feature":307},"Ressourcen",{"dataNavLevelOne":218},"resources",{"text":220,"config":221},"Alle Ressourcen anzeigen",{"href":222,"dataGaName":218,"dataGaLocation":51},"/de-de/resources/",[224,257,279],{"title":225,"items":226},"Erste Schritte",[227,232,237,242,247,252],{"text":228,"config":229},"Installieren",{"href":230,"dataGaName":231,"dataGaLocation":51},"/de-de/install/","install",{"text":233,"config":234},"Kurzanleitungen",{"href":235,"dataGaName":236,"dataGaLocation":51},"/de-de/get-started/","quick setup checklists",{"text":238,"config":239},"Lernen",{"href":240,"dataGaLocation":51,"dataGaName":241},"https://university.gitlab.com/","learn",{"text":243,"config":244},"Produktdokumentation",{"href":245,"dataGaName":246,"dataGaLocation":51},"https://docs.gitlab.com/","product documentation",{"text":248,"config":249},"Best-Practice-Videos",{"href":250,"dataGaName":251,"dataGaLocation":51},"/de-de/getting-started-videos/","best practice videos",{"text":253,"config":254},"Integrationen",{"href":255,"dataGaName":256,"dataGaLocation":51},"/de-de/integrations/","integrations",{"title":258,"items":259},"Entdecken",[260,265,269,274],{"text":261,"config":262},"Kundenerfolge",{"href":263,"dataGaName":264,"dataGaLocation":51},"/de-de/customers/","customer success stories",{"text":266,"config":267},"Blog",{"href":268,"dataGaName":5,"dataGaLocation":51},"/de-de/blog/",{"text":270,"config":271},"Remote",{"href":272,"dataGaName":273,"dataGaLocation":51},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"text":275,"config":276},"TeamOps",{"href":277,"dataGaName":278,"dataGaLocation":51},"/de-de/teamops/","teamops",{"title":280,"items":281},"Vernetzen",[282,287,292,297,302],{"text":283,"config":284},"GitLab-Services",{"href":285,"dataGaName":286,"dataGaLocation":51},"/de-de/services/","services",{"text":288,"config":289},"Community",{"href":290,"dataGaName":291,"dataGaLocation":51},"/community/","community",{"text":293,"config":294},"Forum",{"href":295,"dataGaName":296,"dataGaLocation":51},"https://forum.gitlab.com/","forum",{"text":298,"config":299},"Veranstaltungen",{"href":300,"dataGaName":301,"dataGaLocation":51},"/events/","events",{"text":303,"config":304},"Partner",{"href":305,"dataGaName":306,"dataGaLocation":51},"/partners/","partners",{"backgroundColor":308,"textColor":309,"text":310,"image":311,"link":315},"#2f2a6b","#fff","Perspektiven für die Softwareentwicklung der Zukunft",{"altText":312,"config":313},"the source promo card",{"src":314},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758208064/dzl0dbift9xdizyelkk4.svg",{"text":316,"config":317},"Lies die News",{"href":318,"dataGaName":319,"dataGaLocation":51},"/de-de/the-source/","the source",{"text":321,"config":322,"lists":324},"Unternehmen",{"dataNavLevelOne":323},"company",[325],{"items":326},[327,332,338,340,345,350,355,360,365,370,375],{"text":328,"config":329},"Über",{"href":330,"dataGaName":331,"dataGaLocation":51},"/de-de/company/","about",{"text":333,"config":334,"footerGa":337},"Karriere",{"href":335,"dataGaName":336,"dataGaLocation":51},"/jobs/","jobs",{"dataGaName":336},{"text":298,"config":339},{"href":300,"dataGaName":301,"dataGaLocation":51},{"text":341,"config":342},"Geschäftsführung",{"href":343,"dataGaName":344,"dataGaLocation":51},"/company/team/e-group/","leadership",{"text":346,"config":347},"Team",{"href":348,"dataGaName":349,"dataGaLocation":51},"/company/team/","team",{"text":351,"config":352},"Handbuch",{"href":353,"dataGaName":354,"dataGaLocation":51},"https://handbook.gitlab.com/","handbook",{"text":356,"config":357},"Investor Relations",{"href":358,"dataGaName":359,"dataGaLocation":51},"https://ir.gitlab.com/","investor relations",{"text":361,"config":362},"Trust Center",{"href":363,"dataGaName":364,"dataGaLocation":51},"/de-de/security/","trust center",{"text":366,"config":367},"AI Transparency Center",{"href":368,"dataGaName":369,"dataGaLocation":51},"/de-de/ai-transparency-center/","ai transparency center",{"text":371,"config":372},"Newsletter",{"href":373,"dataGaName":374,"dataGaLocation":51},"/company/contact/","newsletter",{"text":376,"config":377},"Presse",{"href":378,"dataGaName":379,"dataGaLocation":51},"/press/","press",{"text":381,"config":382,"lists":383},"Kontakt",{"dataNavLevelOne":323},[384],{"items":385},[386,389,394],{"text":58,"config":387},{"href":60,"dataGaName":388,"dataGaLocation":51},"talk to sales",{"text":390,"config":391},"Support",{"href":392,"dataGaName":393,"dataGaLocation":51},"/support/","get help",{"text":395,"config":396},"Kundenportal",{"href":397,"dataGaName":398,"dataGaLocation":51},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":400,"login":401,"suggestions":408},"Schließen",{"text":402,"link":403},"Um Repositories und Projekte zu durchsuchen, melde dich an bei",{"text":404,"config":405},"gitlab.com",{"href":65,"dataGaName":406,"dataGaLocation":407},"search login","search",{"text":409,"default":410},"Vorschläge",[411,414,419,421,426,431],{"text":80,"config":412},{"href":85,"dataGaName":413,"dataGaLocation":407},"GitLab Duo (AI)",{"text":415,"config":416},"Code Suggestions (KI)",{"href":417,"dataGaName":418,"dataGaLocation":407},"/de-de/solutions/code-suggestions/","Code Suggestions (AI)",{"text":131,"config":420},{"href":133,"dataGaName":131,"dataGaLocation":407},{"text":422,"config":423},"GitLab auf AWS",{"href":424,"dataGaName":425,"dataGaLocation":407},"/de-de/partners/technology-partners/aws/","GitLab on AWS",{"text":427,"config":428},"GitLab auf Google Cloud",{"href":429,"dataGaName":430,"dataGaLocation":407},"/de-de/partners/technology-partners/google-cloud-platform/","GitLab on Google Cloud",{"text":432,"config":433},"Warum GitLab?",{"href":93,"dataGaName":434,"dataGaLocation":407},"Why GitLab?",{"freeTrial":436,"mobileIcon":441,"desktopIcon":446},{"text":437,"config":438},"Kostenlos testen",{"href":439,"dataGaName":56,"dataGaLocation":440},"https://gitlab.com/-/trials/new/","nav",{"altText":442,"config":443},"GitLab-Symbol",{"src":444,"dataGaName":445,"dataGaLocation":440},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":442,"config":447},{"src":448,"dataGaName":445,"dataGaLocation":440},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"freeTrial":450,"mobileIcon":454,"desktopIcon":456},{"text":451,"config":452},"Erfahre mehr über GitLab Duo",{"href":85,"dataGaName":453,"dataGaLocation":440},"gitlab duo",{"altText":442,"config":455},{"src":444,"dataGaName":445,"dataGaLocation":440},{"altText":442,"config":457},{"src":448,"dataGaName":445,"dataGaLocation":440},"content:shared:de-de:main-navigation.yml","Main Navigation","shared/de-de/main-navigation.yml","shared/de-de/main-navigation",{"_path":463,"_dir":45,"_draft":6,"_partial":6,"_locale":7,"title":464,"button":465,"config":470,"_id":472,"_type":37,"_source":39,"_file":473,"_stem":474,"_extension":42},"/shared/de-de/banner","GitLab Duo Agent Platform ist jetzt in öffentlicher Beta!",{"text":466,"config":467},"Beta testen",{"href":468,"dataGaName":469,"dataGaLocation":51},"/de-de/gitlab-duo/agent-platform/","duo banner",{"layout":471},"release","content:shared:de-de:banner.yml","shared/de-de/banner.yml","shared/de-de/banner",{"_path":476,"_dir":45,"_draft":6,"_partial":6,"_locale":7,"data":477,"_id":680,"_type":37,"title":681,"_source":39,"_file":682,"_stem":683,"_extension":42},"/shared/de-de/main-footer",{"text":478,"source":479,"edit":485,"contribute":490,"config":495,"items":500,"minimal":672},"Git ist eine Marke von Software Freedom Conservancy und unsere Verwendung von „GitLab“ erfolgt unter Lizenz.",{"text":480,"config":481},"Quelltext der Seite anzeigen",{"href":482,"dataGaName":483,"dataGaLocation":484},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":486,"config":487},"Diese Seite bearbeiten",{"href":488,"dataGaName":489,"dataGaLocation":484},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":491,"config":492},"Beteilige dich",{"href":493,"dataGaName":494,"dataGaLocation":484},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":496,"facebook":497,"youtube":498,"linkedin":499},"https://x.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[501,524,579,608,642],{"title":69,"links":502,"subMenu":507},[503],{"text":504,"config":505},"DevSecOps-Plattform",{"href":78,"dataGaName":506,"dataGaLocation":484},"devsecops platform",[508],{"title":211,"links":509},[510,514,519],{"text":511,"config":512},"Tarife anzeigen",{"href":213,"dataGaName":513,"dataGaLocation":484},"view plans",{"text":515,"config":516},"Vorteile von Premium",{"href":517,"dataGaName":518,"dataGaLocation":484},"/de-de/pricing/premium/","why premium",{"text":520,"config":521},"Vorteile von Ultimate",{"href":522,"dataGaName":523,"dataGaLocation":484},"/de-de/pricing/ultimate/","why ultimate",{"title":525,"links":526},"Lösungen",[527,532,535,537,542,547,551,554,557,562,564,566,569,574],{"text":528,"config":529},"Digitale Transformation",{"href":530,"dataGaName":531,"dataGaLocation":484},"/de-de/topics/digital-transformation/","digital transformation",{"text":533,"config":534},"Sicherheit und Compliance",{"href":159,"dataGaName":160,"dataGaLocation":484},{"text":144,"config":536},{"href":127,"dataGaName":128,"dataGaLocation":484},{"text":538,"config":539},"Agile Entwicklung",{"href":540,"dataGaName":541,"dataGaLocation":484},"/de-de/solutions/agile-delivery/","agile delivery",{"text":543,"config":544},"Cloud-Transformation",{"href":545,"dataGaName":546,"dataGaLocation":484},"/de-de/topics/cloud-native/","cloud transformation",{"text":548,"config":549},"SCM",{"href":141,"dataGaName":550,"dataGaLocation":484},"source code management",{"text":131,"config":552},{"href":133,"dataGaName":553,"dataGaLocation":484},"continuous integration & delivery",{"text":183,"config":555},{"href":185,"dataGaName":556,"dataGaLocation":484},"value stream management",{"text":558,"config":559},"GitOps",{"href":560,"dataGaName":561,"dataGaLocation":484},"/de-de/solutions/gitops/","gitops",{"text":196,"config":563},{"href":198,"dataGaName":199,"dataGaLocation":484},{"text":201,"config":565},{"href":203,"dataGaName":204,"dataGaLocation":484},{"text":567,"config":568},"Öffentlicher Sektor",{"href":208,"dataGaName":209,"dataGaLocation":484},{"text":570,"config":571},"Bildungswesen",{"href":572,"dataGaName":573,"dataGaLocation":484},"/de-de/solutions/education/","education",{"text":575,"config":576},"Finanzdienstleistungen",{"href":577,"dataGaName":578,"dataGaLocation":484},"/de-de/solutions/finance/","financial services",{"title":216,"links":580},[581,583,585,587,590,592,594,596,598,600,602,604,606],{"text":228,"config":582},{"href":230,"dataGaName":231,"dataGaLocation":484},{"text":233,"config":584},{"href":235,"dataGaName":236,"dataGaLocation":484},{"text":238,"config":586},{"href":240,"dataGaName":241,"dataGaLocation":484},{"text":243,"config":588},{"href":245,"dataGaName":589,"dataGaLocation":484},"docs",{"text":266,"config":591},{"href":268,"dataGaName":5,"dataGaLocation":484},{"text":261,"config":593},{"href":263,"dataGaName":264,"dataGaLocation":484},{"text":270,"config":595},{"href":272,"dataGaName":273,"dataGaLocation":484},{"text":283,"config":597},{"href":285,"dataGaName":286,"dataGaLocation":484},{"text":275,"config":599},{"href":277,"dataGaName":278,"dataGaLocation":484},{"text":288,"config":601},{"href":290,"dataGaName":291,"dataGaLocation":484},{"text":293,"config":603},{"href":295,"dataGaName":296,"dataGaLocation":484},{"text":298,"config":605},{"href":300,"dataGaName":301,"dataGaLocation":484},{"text":303,"config":607},{"href":305,"dataGaName":306,"dataGaLocation":484},{"title":321,"links":609},[610,612,614,616,618,620,622,626,631,633,635,637],{"text":328,"config":611},{"href":330,"dataGaName":323,"dataGaLocation":484},{"text":333,"config":613},{"href":335,"dataGaName":336,"dataGaLocation":484},{"text":341,"config":615},{"href":343,"dataGaName":344,"dataGaLocation":484},{"text":346,"config":617},{"href":348,"dataGaName":349,"dataGaLocation":484},{"text":351,"config":619},{"href":353,"dataGaName":354,"dataGaLocation":484},{"text":356,"config":621},{"href":358,"dataGaName":359,"dataGaLocation":484},{"text":623,"config":624},"Sustainability",{"href":625,"dataGaName":623,"dataGaLocation":484},"/sustainability/",{"text":627,"config":628},"Vielfalt, Inklusion und Zugehörigkeit",{"href":629,"dataGaName":630,"dataGaLocation":484},"/de-de/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":361,"config":632},{"href":363,"dataGaName":364,"dataGaLocation":484},{"text":371,"config":634},{"href":373,"dataGaName":374,"dataGaLocation":484},{"text":376,"config":636},{"href":378,"dataGaName":379,"dataGaLocation":484},{"text":638,"config":639},"Transparenzerklärung zu moderner Sklaverei",{"href":640,"dataGaName":641,"dataGaLocation":484},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"title":643,"links":644},"Nimm Kontakt auf",[645,648,650,652,657,662,667],{"text":646,"config":647},"Sprich mit einem Experten/einer Expertin",{"href":60,"dataGaName":61,"dataGaLocation":484},{"text":390,"config":649},{"href":392,"dataGaName":393,"dataGaLocation":484},{"text":395,"config":651},{"href":397,"dataGaName":398,"dataGaLocation":484},{"text":653,"config":654},"Status",{"href":655,"dataGaName":656,"dataGaLocation":484},"https://status.gitlab.com/","status",{"text":658,"config":659},"Nutzungsbedingungen",{"href":660,"dataGaName":661,"dataGaLocation":484},"/terms/","terms of use",{"text":663,"config":664},"Datenschutzerklärung",{"href":665,"dataGaName":666,"dataGaLocation":484},"/de-de/privacy/","privacy statement",{"text":668,"config":669},"Cookie-Einstellungen",{"dataGaName":670,"dataGaLocation":484,"id":671,"isOneTrustButton":34},"cookie preferences","ot-sdk-btn",{"items":673},[674,676,678],{"text":658,"config":675},{"href":660,"dataGaName":661,"dataGaLocation":484},{"text":663,"config":677},{"href":665,"dataGaName":666,"dataGaLocation":484},{"text":668,"config":679},{"dataGaName":670,"dataGaLocation":484,"id":671,"isOneTrustButton":34},"content:shared:de-de:main-footer.yml","Main Footer","shared/de-de/main-footer.yml","shared/de-de/main-footer",[685,697],{"_path":686,"_dir":687,"_draft":6,"_partial":6,"_locale":7,"content":688,"config":692,"_id":694,"_type":37,"title":20,"_source":39,"_file":695,"_stem":696,"_extension":42},"/en-us/blog/authors/michael-friedrich","authors",{"name":20,"config":689},{"headshot":690,"ctfId":691},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749659879/Blog/Author%20Headshots/dnsmichi-headshot.jpg","dnsmichi",{"template":693},"BlogAuthor","content:en-us:blog:authors:michael-friedrich.yml","en-us/blog/authors/michael-friedrich.yml","en-us/blog/authors/michael-friedrich",{"_path":698,"_dir":687,"_draft":6,"_partial":6,"_locale":7,"content":699,"config":703,"_id":704,"_type":37,"title":21,"_source":39,"_file":705,"_stem":706,"_extension":42},"/en-us/blog/authors/alana-bellucci",{"name":21,"config":700},{"headshot":701,"ctfId":702},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749664907/Blog/Author%20Headshots/abellucci-headshot.jpg","abellucci",{"template":693},"content:en-us:blog:authors:alana-bellucci.yml","en-us/blog/authors/alana-bellucci.yml","en-us/blog/authors/alana-bellucci",{"_path":708,"_dir":45,"_draft":6,"_partial":6,"_locale":7,"header":709,"eyebrow":710,"blurb":711,"button":712,"secondaryButton":716,"_id":718,"_type":37,"title":719,"_source":39,"_file":720,"_stem":721,"_extension":42},"/shared/de-de/next-steps","Stelle jetzt bessere Software schneller bereit","Mehr als 50 % der Fortune-100-Unternehmen vertrauen GitLab","Erlebe, was dein Team mit der intelligenten\n\n\nDevSecOps-Plattform erreichen kann.\n",{"text":53,"config":713},{"href":714,"dataGaName":56,"dataGaLocation":715},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":58,"config":717},{"href":60,"dataGaName":61,"dataGaLocation":715},"content:shared:de-de:next-steps.yml","Next Steps","shared/de-de/next-steps.yml","shared/de-de/next-steps",1759347790565]