Repository navigation
Security-Review führt Tests in der Sandbox aus, auch mit PostgreSQL (#37) - #38
Merged
Merged
Conversation
Das Review hatte keine Datenbank. Was an Policies, Triggern und den Rechten der Rollen hängt, konnte es nur lesen, und was sich nur mit Datenbank belegen ließ, blieb als Beweislücke stehen und machte das Review rot. - Der Aufruf nennt die Testdatenbank des Repositorys (Eingabe database). Ohne Angabe bleibt alles, wie es war. - PostgreSQL 18 kommt aus der Paketquelle von PostgreSQL, solange es sudo gibt: nur die Programme, kein Cluster, kein Dienst. Der Schlüssel der Quelle wird gegen seinen Fingerabdruck geprüft. - Den Server startet das Review selbst in der Sandbox, über ein Skript, das der Workflow in den Checkout legt: über TCP auf dem 127.0.0.1 der Sandbox, Daten unter .security-review/cache, für die Dauer eines Befehls. Außerhalb der Sandbox läuft keiner, und das wird vor dem Review geprüft. An den Einstellungen der Sandbox ändert sich nichts. - Der Auftrag verlangt gezielte Beweise (eigener Gegenversuch, einzelne Testdateien), nicht die ganze Testreihe, und der Bericht nennt, was mit der Datenbank lief. Startet sie nicht, ist das kein Befund. - Die Variable SECURITY_REVIEW_DATABASE der Organisation, auf "aus" gesetzt, schaltet die Datenbank für alle Repositories ab, ohne Pull Request. - Schlägt die Installation fehl oder ist die Angabe nicht lesbar, läuft das Review ohne Datenbank weiter.
Im ersten Probelauf blieb das Review rein lesend, obwohl der Pull Request eine Migration und Routen brachte, die sich auf die Trennung nach Bereichen stützen. Der Auftrag verlangt jetzt in solchen Fällen den ausgeführten Beleg und sagt, wann die Datenbank nicht gebraucht wird.
Im zweiten Probelauf scheiterte die Installation in der Sandbox: Corepack liest die Proxy-Variablen nicht von selbst und suchte die Registry direkt (getaddrinfo EAI_AGAIN). NODE_USE_ENV_PROXY lässt Node den Proxy der Sandbox benutzen. Dazu legt corepack enable pnpm in den Pfad wie in der CI, denn turbo findet es hinter corepack pnpm nicht. Beides fehlte dem Review, seit es eine Shell hat: Tests ließen sich darin nie ausführen.
Im dritten Probelauf scheiterte die Installation an node_modules/.bin: mit CLAUDE_CODE_SUBPROCESS_ENV_SCRUB hält die Sandbox im Arbeitsverzeichnis package.json, die Lockfiles, node_modules/.bin, scripts und .github schreibgeschützt, damit kein späterer Schritt ausführt, was der Agent dort abgelegt hat. Das bleibt so. Für Tests legt review-workspace beim ersten Aufruf eine Kopie dessen an, was git im Checkout kennt, unter .security-review/cache, die mit dem Checkout verschwindet. Beide Skripte liegen in einem Ordner im Pfad des Agenten, in den die Sandbox nichts schreiben lässt.
This was referenced Oct 12, 2026
Security-Review: Aufruf auf opengewerk/.github#40 heben, mit Testdatenbank
opengewerk/opengewerk#602
Merged
Musiker15
added a commit
to opengewerk/opengewerk-website
that referenced
this pull request
Oct 12, 2026
* Security-Review: Aufruf auf opengewerk/.github#38 heben Der Aufruf zeigt jetzt auf fb4808a, den Commit von opengewerk/.github#38 auf dessen main. Eine Datenbank nennt er nicht. Das Review erreicht damit die Registry über den Proxy seiner Sandbox, findet pnpm im Pfad und installiert in einer Kopie des Checkouts. Vorher ließ sich in der Sandbox nichts installieren, und kein Test lief dort. * Security-Review: Aufruf auf opengewerk/.github#40 heben Der Aufruf zeigt jetzt auf c12e3c2, den Commit von opengewerk/.github#40 auf dessen main. Dort muss die Schlüsseldatei der Paketquelle von PostgreSQL genau den einen erwarteten Schlüssel enthalten; geprüft wurde vorher nur der erste der Datei.
Musiker15
added a commit
to opengewerk/opengewerk-api-spec
that referenced
this pull request
Oct 12, 2026
Hebt den Aufruf des Security-Reviews auf `c12e3c2`, den Commit von opengewerk/.github#40 auf dessen `main`. Er enthält opengewerk/.github#38 und die Korrektur aus #40. Das Review kann damit Tests ausführen. Eine Datenbank bekommt es hier nicht, weil der Aufruf keine nennt. Was sich am Workflow geändert hat und wie es geprüft wurde, steht in opengewerk/.github#38: Proxy der Sandbox für Node, `pnpm` im Pfad, eine Kopie des Checkouts zum Installieren, PostgreSQL in der Sandbox. Die Einstellungen der Sandbox sind unverändert. opengewerk/.github#40 verlangt dazu, dass die Schlüsseldatei der Paketquelle von PostgreSQL genau den einen erwarteten Schlüssel enthält. Teil von opengewerk/.github#37.
Musiker15
added a commit
to opengewerk/opengewerk-kanzlei
that referenced
this pull request
Oct 12, 2026
Hebt den Aufruf des Security-Reviews auf `c12e3c2`, den Commit von opengewerk/.github#40 auf dessen `main`. Er enthält opengewerk/.github#38 und die Korrektur aus #40. Das Review kann damit Tests ausführen. Eine Datenbank bekommt es hier nicht, weil der Aufruf keine nennt. Was sich am Workflow geändert hat und wie es geprüft wurde, steht in opengewerk/.github#38: Proxy der Sandbox für Node, `pnpm` im Pfad, eine Kopie des Checkouts zum Installieren, PostgreSQL in der Sandbox. Die Einstellungen der Sandbox sind unverändert. opengewerk/.github#40 verlangt dazu, dass die Schlüsseldatei der Paketquelle von PostgreSQL genau den einen erwarteten Schlüssel enthält. Teil von opengewerk/.github#37.
Musiker15
added a commit
to opengewerk/opengewerk
that referenced
this pull request
Oct 12, 2026
…nbank (#602) Hebt den Aufruf des Security-Reviews auf `c12e3c2`, den Commit von opengewerk/.github#40 auf dessen `main`. Er enthält opengewerk/.github#38 und die Korrektur aus #40. Das Review kann damit Tests ausführen, auch mit Datenbank: der Aufruf nennt die Testdatenbank dieses Repositorys, und das Review startet dafür ein eigenes PostgreSQL 18 in seiner Sandbox. Was sich am Workflow geändert hat und wie es geprüft wurde, steht in opengewerk/.github#38: Proxy der Sandbox für Node, `pnpm` im Pfad, eine Kopie des Checkouts zum Installieren, PostgreSQL in der Sandbox. Die Einstellungen der Sandbox sind unverändert. opengewerk/.github#40 verlangt dazu, dass die Schlüsseldatei der Paketquelle von PostgreSQL genau den einen erwarteten Schlüssel enthält. Teil von opengewerk/.github#37.
Musiker15
added a commit
to opengewerk/opengewerk-haustechnik
that referenced
this pull request
Oct 12, 2026
…nbank (#250) * Security-Review: Aufruf auf opengewerk/.github#38 heben, mit Testdatenbank Der Aufruf zeigt jetzt auf fb4808a, den Commit von opengewerk/.github#38 auf dessen main. Dazu nennt er die Testdatenbank dieses Repositorys. Das Review erreicht damit die Registry über den Proxy seiner Sandbox, findet pnpm im Pfad und installiert in einer Kopie des Checkouts. Vorher ließ sich in der Sandbox nichts installieren, und kein Test lief dort. * Security-Review: Aufruf auf opengewerk/.github#40 heben Der Aufruf zeigt jetzt auf c12e3c2, den Commit von opengewerk/.github#40 auf dessen main. Dort muss die Schlüsseldatei der Paketquelle von PostgreSQL genau den einen erwarteten Schlüssel enthalten; geprüft wurde vorher nur der erste der Datei.
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.
Teil von #37. Das Issue schließt, wenn die Aufrufe der fünf Repositories auf den gemergten Commit zeigen.
Was sich ändert
Das Security-Review kann jetzt Tests ausführen, auch solche mit Datenbank. Der Probelauf hat gezeigt, dass es das bisher gar nicht konnte: in seiner Sandbox ließ sich nichts installieren, mit oder ohne Datenbank. Vier Dinge fehlten, und alle vier bringt dieser Pull Request.
with: database: postgres://Rolle:Passwort@127.0.0.1:Port/Name. PostgreSQL 18 kommt aus der Paketquelle von PostgreSQL, solange es sudo gibt: nur die Programme, kein Cluster, kein Dienst, der Schlüssel der Quelle gegen seinen Fingerabdruck geprüft. Den Server startet das Review selbst in der Sandbox mitwith-database <Befehl>: über TCP auf dem127.0.0.1der Sandbox, mit den Daten unter.security-review/cache, für die Dauer eines Befehls.getaddrinfo EAI_AGAIN).NODE_USE_ENV_PROXY=1lässt Node den Proxy benutzen.corepack enablewie in der CI, dennturbofindetpnpmhintercorepack pnpmnicht.CLAUDE_CODE_SUBPROCESS_ENV_SCRUBhält die Sandbox im Arbeitsverzeichnispackage.json, die Lockfiles,node_modules/.bin,scriptsund.githubschreibgeschützt, damit kein späterer Schritt ausführt, was der Agent dort abgelegt hat. Das bleibt so. Für Tests legtreview-workspacebeim ersten Aufruf eine Kopie dessen an, was git im Checkout kennt, unter.security-review/cache. Sie entsteht in der Sandbox und verschwindet mit dem Checkout.Dazu der Auftrag: Ändert ein Pull Request etwas, das erst die Datenbank durchsetzt (Policy, Trigger, Recht einer Rolle, Constraint, Migration), oder stützt sich neuer Code darauf, wird der Beleg ausgeführt und nicht nur gelesen, mit einzelnen Testdateien oder einem eigenen Gegenversuch. Die ganze Testreihe bleibt Sache der CI. Der Bericht nennt, was mit der Datenbank lief. Startet sie nicht, ist das kein Befund.
Was gleich bleibt
databasebekommt ein Repository keine Datenbank. Ein Pull Request von außen bekommt weiterhin keine Shell und damit nichts von alldem.Abschalten
Die Variable
SECURITY_REVIEW_DATABASEder Organisation, aufausgesetzt, nimmt die Datenbank für alle Repositories heraus, ohne Pull Request. Der Stand vor dieser Änderung liegt als Zweigsicherung/security-review-ohne-datenbankauf450efc1; auf diesen Commit zeigen die fünf Aufrufe heute.Geprüft
Lokal in einem Container mit Ubuntu 24.04, bubblewrap und der Sandbox-Laufzeit, mit den Schritten, wie sie im Workflow stehen: Unix-Sockets gesperrt, Netz nur zur Registry, Schreiben außerhalb verweigert; darin Server starten, Daten zwischen zwei Befehlen, ein hart beendeter Helfer, zwei Aufrufe zugleich, sieben unzulässige Angaben der Adresse, und die ganze Kette aus Kopie, Installation, Bau und einer Testdatei gegen die Datenbank.
Auf dem Runner mit vier Probeläufen an opengewerk/opengewerk-haustechnik#249, der den Diff von opengewerk/opengewerk-haustechnik#248 noch einmal prüft:
node_modules/.binschreibgeschütztDie letzten 14 Reviews der Haustechnik lagen zwischen 0,11 und 0,29 USD. Probe 4 liegt mitten darin: die Tests kosten Laufzeit auf dem Runner, aber kaum Züge. Die Installation von PostgreSQL braucht 6 bis 9 Sekunden je Lauf.
Eigene Festlegungen, die Moritz noch nicht gesehen hat
C.UTF-8angelegt: Byte-Reihenfolge, wie das Abbildpostgres:18-alpineder CI sortiert.fsyncist aus, nichts dort überlebt den Lauf.NODE_USE_ENV_PROXY,corepack enableund die Arbeitskopie gelten für jedes Review mit Shell, auch ohne Datenbank: ohne sie lässt sich in keinem Repository etwas installieren.SECURITY_REVIEW_DATABASE.Danach
Die Aufrufe der fünf Repositories werden auf den gemergten Commit angehoben, in der Haustechnik und in der Handwerkersoftware mit der Eingabe
database.