AutoST für CI/CD-Engineers: Steuergeräte-Security-Scans als Pipeline-Gate
Wie CI/CD- und Testautomatisierungs-Engineers AutoST-Scans über die REST-API oder das Bamboo-Plugin aus der Pipeline starten, Builds gaten und Nachweise ablegen.
Aktualisiert Diese Seite als Markdown
Kurz gesagt
Ein CI/CD-Engineer will, dass sich ein Steuergeräte-Security-Test wie jede andere Pipeline-Stufe verhält: vom Build ausgelöst, in bekannter Zeit fertig, bestanden oder nicht, mit Ergebnis im Build-Report. AutoST macht das über eine REST-API mit langlebigen API-Tokens und ein fertiges Atlassian-Bamboo-Plugin, das einen Scan startet, auf das Ergebnis wartet, den Build über deinem Schwellwert scheitern lässt und JSON, JUnit XML und ein PDF ausgibt. Andere CI-Systeme rufen dieselbe REST-API aus einem Skript-Schritt auf; Plugins für Jenkins, GitLab oder GitHub gibt es nicht.
Die Aufgabe
Ein CI/CD- oder Testautomatisierungs-Engineer in einem Steuergeräteprojekt baut und pflegt die Pipeline, die einen Commit bis zum geflashten Steuergerät am Prüfstand und zu einem grünen oder roten Build bringt. Unit-Tests, statische Analyse und Hardware-in-the-Loop-Tests sind meist schon da. Security-Tests nicht: Die passieren einmal pro Musterphase, von Hand, und das Ergebnis kommt Wochen nach der Änderung, die es verursacht hat.
Wir sehen regelmäßig Regressionen, die eine Pipeline am Tag ihrer Entstehung gefunden hätte. Ein Debug-Service, der für einen Test-Build aktiviert wurde, bleibt im Release in der Default Session erreichbar. Ein Refactoring des Diagnose-Stacks verliert den Fehlversuchszähler bei SecurityAccess. Eine neue DID für die Bandende-Programmierung ist ohne Authentifizierung beschreibbar. Jedes davon ist ein einzeiliger Diff, und jedes zeigt der nächste Enumerations-Scan.
Was die Rolle aus einem Testlauf braucht
Der Engineer braucht einen Security-Scan, der sich wie jede andere Stufe verhält: skriptbar, zeitlich begrenzt und eindeutig.
- Einen Auslöser ohne Mensch. Langlebige API-Tokens (JWTs), im Dashboard eingeschränkt und widerrufbar, authentifizieren die Pipeline gegen die REST-API. Dieselbe API startet jeden Scan, den auch das Dashboard starten kann.
- Ein klares Urteil. Das Bamboo-Plugin lässt den Build scheitern, wenn die Findings deinen Schwellwert überschreiten. In anderen CI-Systemen liest dein Skript das Scan-Ergebnis aus der API und setzt den Exit-Code.
- Ausgaben, die der Build-Server versteht. JUnit XML zeigt den Scan in den Build-Ergebnissen wie jede Testsuite, JSON speist eigene Werkzeuge, und ein PDF pro Lauf wird als Nachweis archiviert. Der Fix Plan exportiert SARIF 2.1.0 für Code-Scanning-Dashboards.
- Stabile Ergebnisse. Akzeptierte Risiken und Kommentare bleiben über Re-Scans erhalten, das Gate reagiert also nur auf neue Findings. Fuzzing nutzt einen gespeicherten Seed, ein nächtlicher Crash lässt sich exakt nachspielen.
- Keine eingehenden Ports am Prüfstand. Der Carbyne-Agent pollt das Backend über HTTPS, das Prüfstandsnetz muss vom Build-Server aus nicht erreichbar sein.
Typisches Setup
Die Pipeline baut die Firmware, flasht sie mit deinem vorhandenen Flash-Werkzeug auf das Steuergerät am Prüfstand und ruft dann AutoST auf. Der Carbyne-Agent läuft auf dem Prüfstands-PC, unter Windows mit Vector-Hardware über die XL Driver Library oder unter Linux mit PEAK, Kvaser oder jedem anderen SocketCAN-Interface, dazu Ethernet für DoIP und SOME/IP. Er holt den Job ab, fährt den Scan und streamt die Ergebnisse ans Backend; mehrere Prüfstände laufen parallel.
In Atlassian Bamboo ist das Plugin ein Task im Build-Plan: Es startet den Scan, wartet auf das Ende, wendet den Schwellwert an und hängt JSON, JUnit XML und das PDF an. In Jenkins, GitLab CI oder GitHub Actions gibt es kein Plugin; ein Skript-Schritt ruft die REST-API mit dem Token aus deinem Secret Store auf und macht dasselbe. Eine übliche Aufteilung ist ein kurzes deterministisches Profil pro Build, Enumeration und SecurityAccess-Prüfung, und ein längeres Fuzzing-Profil nachts oder vor einem Release.
Ein sinnvolles erstes Projekt
Fang mit einem Steuergerät an einem Prüfstand an, den die Pipeline schon flasht.
- Woche 1: Anbindung. Agent am Prüfstand installieren und koppeln, ein API-Token für die Pipeline anlegen und den Bamboo-Task oder einen Skript-Schritt ergänzen, der nach dem Flashen einen Enumerations-Scan startet.
- Woche 2: Baseline und Schwellwert. Den Scan auf dem aktuellen Release fahren, die Findings mit dem Security-Team durchgehen, Gewolltes akzeptieren und den Schwellwert so setzen, dass der heutige Build besteht.
- Woche 3: Gate. Den Schwellwert scharf schalten. Ab jetzt lässt ein neu erreichbarer Service, ein verlorener Fehlversuchszähler oder eine neu beschreibbare DID den Build scheitern, mit dem Request im Bericht.
- Woche 4: Nächtliches Fuzzing. Einen geplanten Job mit Seeded UDS-Fuzzing ergänzen, mit TesterPresent-Lebenszeichen und DTC-Überwachung, und Crashes in den Fix Plan leiten.
- Review. Die gefundenen Regressionen zählen und entscheiden, welche weiteren Steuergeräte und Prüfstände in die Pipeline kommen.
Wie Ergebnisse in ISO/SAE 21434 und UN R155 fließen
Jeder Pipeline-Lauf hinterlässt ein datiertes PDF, damit wird Security-Verifikation vom Projektmeilenstein zur Aufzeichnung pro Build. ISO/SAE 21434:2021 Clause 10.4.2 fordert die Verifikation gegen die Cybersecurity-Spezifikation ([RQ-10-09]) und empfiehlt Komponententests mit Fuzz-Testing und Schwachstellen-Scans ([RC-10-12]); Clause 8.5 behandelt die Schwachstellenanalyse als fortlaufende Aktivität. Ein Gate in der Pipeline ist der direkteste Weg, beides bei jedem Release umzusetzen.
UN R156 verlangt, dass ein Software-Update die Sicherheit des Fahrzeugs nicht untergräbt, in der Praxis also Retest nach jedem Update; eine Pipeline macht das automatisch. Für die Bedrohungen rund um den Diagnosezugriff aus UN R155 Anhang 5 zeigt die Historie pro Build, dass die Maßnahme noch wirkte, als die Software ausgeliefert wurde. AutoST ersetzt keinen Penetrationstest und zertifiziert nichts; es sorgt dafür, dass die bekannten Prüfungen nie übersprungen werden.
FAQ
Häufig gestellte Fragen
Gibt es ein Plugin für Jenkins, GitLab CI oder GitHub Actions?
Nein. Das fertige Plugin gibt es für Atlassian Bamboo. Jedes andere CI-System steuert AutoST über die REST-API mit einem API-Token, typischerweise aus einem kurzen Skript-Schritt, der den Scan startet, auf das Ende wartet und das Ergebnis auswertet. Alles, was das Dashboard kann, ist über die API erreichbar.
Flasht AutoST die neue Firmware auf das Steuergerät?
Nein. Das Flashen des Builds auf das Steuergerät am Prüfstand ist ein Schritt in deiner Pipeline, mit den Werkzeugen, die du schon nutzt. AutoST startet danach, testet das Steuergerät über CAN, CAN FD, DoIP oder SOME/IP mit dem Carbyne-Agenten am Prüfstand und meldet das Ergebnis zurück.
Wie verhindern wir, dass instabile Ergebnisse Builds blockieren?
Beschränke das Gate pro Build auf die deterministischen Prüfungen, etwa die Enumeration erreichbarer Services pro Session und die SecurityAccess-Prüfung, und lass Fuzzing nachts mit gespeichertem Seed laufen. Akzeptierte Risiken bleiben über Scans hinweg erhalten, ein vom Team akzeptiertes Finding lässt den nächsten Build also nicht erneut scheitern.
Quellen
- ISO/SAE 21434:2021 Road vehicles, Cybersecurity engineering, Clause 8.5 und Clause 10.4.2
- UN-Regelung Nr. 156, Software-Update und Software-Update-Managementsystem
- UN-Regelung Nr. 155, Cybersecurity und Cybersecurity-Managementsystem, Anhang 5
- OASIS Static Analysis Results Interchange Format (SARIF) Version 2.1.0
- ISO 14229-1:2020 Unified diagnostic services (UDS), Teil 1: Application layer
Passende Seiten
- PlattformSicherheitstests bei jedem Build, nicht einmal im Jahr.AutoST hat API-Tokens und ein CI-Plugin, das einen Scan auslöst, den Build bei Findings fehlschlagen lässt und JSON, JUnit XML und PDF ausgibt.
- PlattformEin Dashboard im Browser, ein Agent am Prüfstand.AutoST hat drei Teile: Web-Dashboard, Backend zum Orchestrieren und Speichern und den Carbyne-Agent am Prüfstand. So läuft ein Scan bis zum Fix Plan.
- PlattformEine Zahl, die du verteidigen kannst, Nachweise, die du ablegen kannst.AutoST bewertet das ECU-Risiko aus 26 gewichteten UDS-Services auf einer Skala von 0 bis 10 und erstellt PDF-Testnachweise, plus SARIF, CSV und JSON.
- GlossarSARIF (Static Analysis Results Interchange Format)SARIF ist der OASIS-JSON-Standard für den Austausch von Tool-Findings. Was eine SARIF-Datei enthält, warum sie auch für Steuergeräte-Tests passt und worauf du achtest.
- VergleicheEinmaliger Penetrationstest vs. kontinuierliche ECU-Security-TestsEin einmaliger Pentest beschreibt das Steuergerät an einem Datum; kontinuierliches Testen begleitet jedes Firmware-Release. Der Nutzen für ISO/SAE 21434 und UN R155.
- InsightsEine UDS-Fuzzing-Methodik, die echte Bugs findetWie du ein ECU über UDS fuzzt, ohne Läufe zu verschwenden: wohin injizieren, wie einen Crash erkennen, wie ein Finding reproduzierbar machen, und am Prüfstand bleiben.
