Repository navigation
Security-Review: Docker abschalten, Checkout nach dem Agenten entfernen - #36
Merged
Merged
Conversation
Der Läufer gehört zur Gruppe docker, und ein Container mit der Wurzel des Hosts wäre ein zweiter Weg zu root. Der Daemon stoppt jetzt vor sudo, und beides wird geprüft. Den Checkout, in dem der Agent schreiben kann, entfernt ein Schritt gleich nach ihm, bevor der Post-Schritt von actions/checkout dort git aufruft. Lässt sich das Review am PR nicht ablegen, steht der Status auf error statt dauerhaft auf "läuft". Das Restrisiko der wieder erlaubten User Namespaces steht als Kommentar im Workflow.
Musiker15
added a commit
to opengewerk/opengewerk-api-spec
that referenced
this pull request
Oct 10, 2026
) - Docker stoppt, bevor sudo abgeschaltet wird, und beides wird geprüft: Der Läufer gehört zur Gruppe docker, und ein Container mit der Wurzel des Hosts wäre ein zweiter Weg zu root. - Den Checkout, in dem der Agent schreiben kann, entfernt ein Schritt gleich nach ihm, bevor der Post-Schritt von `actions/checkout` dort git aufruft. - Lässt sich das Review am PR nicht ablegen, steht der Status auf `error` statt dauerhaft auf "läuft". - Das Restrisiko der wieder erlaubten User Namespaces steht als Kommentar im Workflow. - Mit dabei: opengewerk/.github#35, der Nachweis eines neuen Pins enthält die ganze Workflow-Datei. Geprüft auf dem Läufer mit dem Test-PR opengewerk/opengewerk-kanzlei#51, dessen Aufruf auf den Prüfcommit zeigte: alle Jobs grün, Docker und sudo abgeschaltet, Checkout vor dem Post-Schritt entfernt, Status gesetzt. Das Review dieses PRs liest den Diff des neuen Pins aus `.github`.
Musiker15
added a commit
to opengewerk/opengewerk-website
that referenced
this pull request
Oct 10, 2026
Musiker15
added a commit
to opengewerk/opengewerk-kanzlei
that referenced
this pull request
Oct 10, 2026
) - Docker stoppt, bevor sudo abgeschaltet wird, und beides wird geprüft: Der Läufer gehört zur Gruppe docker, und ein Container mit der Wurzel des Hosts wäre ein zweiter Weg zu root. - Den Checkout, in dem der Agent schreiben kann, entfernt ein Schritt gleich nach ihm, bevor der Post-Schritt von `actions/checkout` dort git aufruft. - Lässt sich das Review am PR nicht ablegen, steht der Status auf `error` statt dauerhaft auf "läuft". - Das Restrisiko der wieder erlaubten User Namespaces steht als Kommentar im Workflow. - Mit dabei: opengewerk/.github#35, der Nachweis eines neuen Pins enthält die ganze Workflow-Datei. Geprüft auf dem Läufer mit dem Test-PR #51, dessen Aufruf auf den Prüfcommit zeigte: alle Jobs grün, Docker und sudo abgeschaltet, Checkout vor dem Post-Schritt entfernt, Status gesetzt. Das Review dieses PRs liest den Diff des neuen Pins aus `.github`.
Musiker15
added a commit
to opengewerk/opengewerk
that referenced
this pull request
Oct 10, 2026
…590) - Docker stoppt, bevor sudo abgeschaltet wird, und beides wird geprüft: Der Läufer gehört zur Gruppe docker, und ein Container mit der Wurzel des Hosts wäre ein zweiter Weg zu root. - Den Checkout, in dem der Agent schreiben kann, entfernt ein Schritt gleich nach ihm, bevor der Post-Schritt von `actions/checkout` dort git aufruft. - Lässt sich das Review am PR nicht ablegen, steht der Status auf `error` statt dauerhaft auf "läuft". - Das Restrisiko der wieder erlaubten User Namespaces steht als Kommentar im Workflow. - Mit dabei: opengewerk/.github#35, der Nachweis eines neuen Pins enthält die ganze Workflow-Datei. Geprüft auf dem Läufer mit dem Test-PR opengewerk/opengewerk-kanzlei#51, dessen Aufruf auf den Prüfcommit zeigte: alle Jobs grün, Docker und sudo abgeschaltet, Checkout vor dem Post-Schritt entfernt, Status gesetzt. Das Review dieses PRs liest den Diff des neuen Pins aus `.github`.
Musiker15
added a commit
to opengewerk/opengewerk-haustechnik
that referenced
this pull request
Oct 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Härtet das Security-Review nach einer zweiten Kritik am gehärteten Stand.
Was sich ändert
docker, unddocker run -v /:/hostist so gut wie root. Der Schritt heißt jetzt "sudo und Docker abschalten": er stopptdocker.socket,docker.serviceundcontainerd.service, solange sudo das noch kann, und bricht ab, wenn danachsudo -n trueoderdocker infonoch gelingt..giteingeschlossen. Der Post-Schritt vonactions/checkoutruft dort am Ende des Jobsgitundgit submodule foreachauf, außerhalb der Sandbox und mit der Umgebung des Jobs. Ein neuer Schritt "Checkout entfernen" (if: always()) entferntpr/; nach dem Agenten braucht ihn kein Schritt mehr.PR-Security-Reviewblieb auf "läuft". Jetzt steht er dann auferrormit einem Verweis auf den Lauf, und der Job wird rot.kernel.apparmor_restrict_unprivileged_userns=0öffnet den Kern über User Namespaces wieder für jeden Prozess des Jobs. Das steht jetzt als Kommentar am Schritt "Sandbox vorbereiten": bewusst getragen, nur für PRs von Mitgliedern, ein PR von außen bekommt keine Shell.Eigene Festlegungen, die Moritz noch nicht gesehen hat
APPROVE) bei einem Review ohne Befund bleibt, wie Moritz es entschieden hat. Sie ist aufmainkein Tor: das Ruleset verlangt keine Freigabe (required_approving_review_count: 0), undPR-Security-Reviewsteht nicht unter den Pflichtprüfungen. Eine Freigabe, die ein Mitglied über einen eigenen Workflow erzeugt, öffnet deshalb nichts; einen Status mit demselben Namen könnte es genauso setzen. Wirksam dagegen wäre CODEOWNERS für.github/**mit Pflicht zur Freigabe durch den Eigentümer, das liegt bei Moritz.systemctl stopdarf scheitern (|| true), etwa wenn ein Abbild Docker nicht mitbringt; maßgeblich ist die Prüfung mitdocker infodanach.Geprüft
opengewerk-kanzlei(Test: Security-Review auf dem Prüfzweig von .github#36 opengewerk-kanzlei#51), dessen Aufruf auf426c2cczeigt: alle drei Jobs grün, "sudo und Docker abschalten" mit beiden Prüfungen durch, "Checkout entfernen" vor dem Post-Schritt vonactions/checkout, der danach ohne Fehler endet, Status gesetzt. Rot war der Status allein am erwarteten Befund "Pin liegt nicht aufmain"; den Inhalt dieses Zweigs bewertet das Review dort als Härtung ohne Befund.