Alle Skills

security-review (everything-claude-code)

Prüft Authentifizierung, Benutzereingaben, Secrets, API-Endpunkte und Zahlungen anhand einer Sicherheitscheckliste.

ECC security-review: Findet eingebaute Schwachstellen nicht besser als einfaches Codex, bei etwa gleichen Tokens

SituativSicher

Codex CLI · gpt-6-astra

24.9 / 30

Lift gegenüber ohne Skill: -0.16 · Situativ · 18 Läufe

Situativ: der Lift -0.16 liegt unter +1.0. Für „Empfohlen“ sind insgesamt 22/30, eine Ausgabequalität von 3.5 und ein Lift von +1.0 nötig.

SOTA

Bestanden

Getestet mit Codex.

Gilt für Codex, Claude Code

Codex CLI 0.166 (SOTA-Stufe): 18 bewertete Läufe. Ein Bestehen hier deckt gemäß unserer Stufenregel auch Claude Code ab; über die zweite Stufe sagt es nichts aus.

Punktzahlen

Jede Dimension reicht von 0 bis 5, und die sechs ergeben zusammen die Gesamtpunktzahl von 30. 5 ist in jeder Dimension besser. Kosten 5 bedeutet günstig und schnell. Installation 5 bedeutet einfach.

Trigger-Zuverlässigkeit
5.0
Lift gegenüber ohne Skill
1.8
Ausgabequalität
4.1
Token- und Zeitkosten
5.0
Installation und Portabilität
4.0
Sicherheit
5.0

Sicherheitsprüfung

Sicher

Statischer Scan: 5 CRITICAL / 6 HIGH / 4 MEDIUM. Manuelle Prüfung: Sicher in einer Sandbox ohne Netzwerk auszuführen (Scanner-Befunde erklärt). Ein sauberer Scan beweist nicht, dass ein Skill sicher ist.

Installieren

npx skills@latest add affaan-m/everything-claude-code --skill security-review

Quelle

Fixierter Commit: b38be6a7f6350964d59328b52f0624e1d1d552d1

Getestet: 2026-11-02

Was wir getestet haben

  • Ein kleines Service-Modul reviewen — orders_service.py vor dem Merge security-reviewen. Die gefundenen Probleme auflisten, schwerwiegendstes zuerst. Keine Dateien ändern.
  • Einen Auth-Helper reviewen — auth_handlers.py security-reviewen: gerade für unseren Login-Flow geschrieben. Die Probleme auflisten, schwerwiegendstes zuerst. Keine Dateien ändern.
  • Upload-Endpunkte reviewen — upload_api.py security-reviewen. Die Schwachstellen auflisten, schwerwiegendste zuerst. Keine Dateien ändern.

Vorteile

  • Der Skill wurde erkannt, ohne genannt zu werden: Skill-Datei in 6/6 Treatment-Läufen gelesen.
  • Kein Token-Overhead: 1.03x die Tokens von ohne Skill.

Nachteile

  • Kein messbarer Lift gegenüber ohne Skill (-0.16, im Rauschen).
  • Ein Ein-Satz-Prompt erzielte 4.29 gegenüber 4.06 mit dem Skill (-0.23).
  • Testhinweis: Aufgabe t1 enthält drei eingebaute Punkte, die keine Sicherheitsprobleme sind, was die bestmögliche Trefferquote auf etwa 3.1 begrenzt.
  • n=2 pro Aufgabe und Variante; Unterschiede unter etwa 1 Punkt sind Rauschen.

Bewertung

Codex CLI 0.166 (gpt-6-astra, niedriges Reasoning) auf einem Mac-Testrechner, einem frischen temporären Projekt und temporären HOME/TMPDIR/Caches pro Lauf; Skill installiert (Treatment) oder nicht vorhanden (Kontrolle) oder nicht vorhanden mit der Kernanforderung des Skills in einem an den Prompt angehängten Satz (One-Liner-Gruppe); 2 Läufe pro Gruppe und Aufgabe; Netzwerk aus; Schreiben nach /tmp blockiert. Die Prompts nennen den Skill nie (außer der unten genannten Formulierung). Drei kleine Dateien mit je 8 eingebauten Problemen (ein Service-Modul, ein Auth-Helper, Upload-Endpunkte) und eine read-only Anfrage „die Probleme auflisten, schwerwiegendstes zuerst“. Der Order-Service enthält drei Probleme, die keine Sicherheitslücken sind (eine Off-by-one-Grenze, ein Ressourcenleck, Float-Geldbeträge), die ein Security-Review überspringen soll; bei dieser Aufgabe kann ein Sicherheitsprüfer also höchstens 5 von 8 finden, und die Punktzahl erreicht maximal etwa 3.1.

Drei-Arm-Vergleich

VarianteDurchschnittsnote (0-5)Tokens pro Lauf
Ohne Skill4.2260k
Ein-Satz-Prompt4.2944k
Mit Skill4.0662k

Gemessen mit Codex CLI über 18 Läufe, bewertet durch regelbasierte Prüfungen ohne LLM-Richter. Gesamt 24.9 / 30, Urteil Situativ.

Offenlegung: Aufgabe t1 enthält drei eingebaute Punkte, die keine Sicherheitsprobleme sind, was die bestmögliche Trefferquote auf etwa 3.1 begrenzt.

Urteil: Situativ (24.9 / 30). Quelle: affaan-m/everything-claude-code, skills/security-review, gepinnt auf Commit b38be6a. Installation: npx skills@latest add affaan-m/everything-claude-code --skill security-review. Lizenz: MIT (Repo-LICENSE).

Was es ist

Der Skill security-review aus affaan-m/everything-claude-code (ECC): eine Sicherheits-Checkliste für Situationen, in denen Sie Authentifizierung ergänzen, Nutzereingaben verarbeiten, mit Geheimnissen umgehen, API-Endpunkte anlegen oder Zahlungen implementieren. Etwa 1,800 Wörter Markdown in SKILL.md (Secret-Verwaltung, Eingabevalidierung, SQL-Injection, Authentifizierung und Autorisierung, XSS, CSRF, Rate Limiting, Offenlegung sensibler Daten, Abhängigkeitssicherheit, mit kurzen guten/schlechten Codebeispielen und einer Pre-Deployment-Checkliste) und eine zusätzliche Markdown-Datei zur Sicherheit von Cloud-Infrastruktur. Keine Skripte.

So haben wir getestet

Codex CLI 0.166 (gpt-6-astra, low reasoning) auf einem Mac-Testgerät, pro Lauf ein frisches temporäres Projekt und temporäre HOME/TMPDIR/Caches, Skill installiert (Mit-Skill-Gruppe) oder nicht vorhanden (Kontrollgruppe) oder nicht vorhanden, aber mit der Kernanforderung des Skills als einem an den Prompt angehängten Satz (Ein-Satz-Gruppe), 2 Läufe pro Gruppe und Aufgabe, Netzwerk aus, Schreibzugriffe auf /tmp blockiert. Die Prompts nennen den Skill nie (außer der unten genannten Formulierung).

Drei kleine Dateien mit je 8 eingebauten Problemen (ein Service-Modul, ein Auth-Helfer, Upload-Endpunkte) und eine Anfrage ohne Schreibzugriff „liste die Probleme auf, das schwerwiegendste zuerst“. Der Order-Service enthält drei Probleme, die keine Sicherheitslücken sind (eine Off-by-one-Grenze, ein Ressourcenleck, Geldbeträge als Float), die ein Security-Review überspringen soll; bei dieser Aufgabe kann ein Security-Reviewer also höchstens 5 von 8 finden, und die Punktzahl erreicht etwa 3.1.

  1. Ein kleines Service-Modul prüfen — Prüfe orders_service.py sicherheitstechnisch, bevor ich es merge. Liste die gefundenen Probleme auf, das schwerwiegendste zuerst. Ändere keine Dateien.
  2. Einen Auth-Helfer prüfen — Prüfe auth_handlers.py sicherheitstechnisch: Ich habe die Datei gerade für unseren Login-Flow geschrieben. Liste die Probleme auf, das schwerwiegendste zuerst. Ändere keine Dateien.
  3. Upload-Endpunkte prüfen — Prüfe upload_api.py sicherheitstechnisch. Liste die Schwachstellen auf, die schwerwiegendste zuerst. Ändere keine Dateien.

Die Bewertung erfolgt programmatisch (versteckte Tests / Trefferquote bei eingebauten Problemen / Constraint-Prüfungen / Rendern+OCR, wo relevant), 0–5 pro Lauf. Kein LLM-Richter hat eine Punktzahl entschieden.

Ergebnisse

Der Ein-Satz-Prompt für die dritte Gruppe: "Prüfe den Code gegen eine Sicherheits-Checkliste: hartcodierte Geheimnisse, unvalidierte Eingaben, SQL-/Kommando-Injection, defekte Authentifizierung und Autorisierung, unsichere Datei-Uploads, sensible Daten in Fehlern oder Logs und fehlendes Rate Limiting, und nenne für jeden Befund die genaue Zeile."

AufgabePunktzahl KontrolleEin-SatzMit SkillToken KontrolleToken Ein-SatzToken mit SkillSkill gelesen
t1-orders2.893.122.4260k44k72k2/2
t2-auth4.775.04.7759k44k61k2/2
t3-upload5.04.775.059k44k51k2/2

Durchschnitt: 4.22 ohne vs. 4.06 mit Skill (Delta -0.16). Token pro Lauf: 60k vs. 62k (1.03x); Zeit 38s vs. 44s. Ein-Satz-Gruppe: 4.29 (Zuwachs des Skills gegenüber dem Ein-Satz-Prompt: -0.23; Zuwachs des Ein-Satz-Prompts gegenüber ohne Skill: +0.08); Token des Ein-Satz-Prompts 44k pro Lauf, der Skill kostet also 1.40x so viel wie der Ein-Satz-Prompt.

Was dabei herauskam

  • Kein Gewinn. Durchschnitt 4.22 ohne Skill, 4.29 mit einer Ein-Satz-Sicherheits-Checkliste, 4.06 mit dem Skill. Trefferquote bei eingebauten Problemen: 4.8 von 8 pro Lauf ohne, 4.9 mit dem Ein-Satz, 4.5 mit dem Skill.
  • Bei der Order-Service-Aufgabe war der Skill etwas schlechter: 2.4 im Schnitt gegenüber 2.9 für die Kontrolle und 3.1 für den Ein-Satz (2 und 3 eingebaute Punkte pro Lauf gefunden, gegenüber 3–4 bei den anderen). Das liegt bei n=2 im Rauschen.
  • Beim Auth-Helfer und den Upload-Endpunkten fand jede Gruppe 7 oder 8 von 8 eingebauten Problemen; beides sind klassische Lehrbuchfehler (md5, Path Traversal, pickle, Kommando-Injection), die reines Codex bereits kennt.
  • Der Skill wird in 6/6 Läufen gelesen. Er kostet 62k Token pro Lauf gegenüber 60k (1.03x) und 44k mit dem Ein-Satz (1.41x): Die Ein-Satz-Läufe waren am günstigsten, weil sie vor der Antwort weniger lasen.
  • Eine Einschränkung der Bewertung: Punkte werden per Regex abgeglichen, ein anders formulierter Befund kann also als verfehlt zählen.

Bewertung nach Dimensionen

DimensionPunktzahlBegründung
1_output_quality4.06

Durchschnitt 4.06/5 mit Skill (programmatische Prüfungen, siehe Tabelle pro Aufgabe).

2_lift_vs_no_skill1.84

-0.16 Punkte gegenüber 4.22 ohne Skill (n=2 pro Aufgabe; unter etwa 1 Punkt ist Rauschen).

3_trigger5.0Skill-Datei in 6/6 Mit-Skill-Läufen gelesen.
4_instructions_portability4

Reine Markdown-Checkliste, überwiegend JS/TS- und Beispiele mit JS/TS- und Supabase-Bezug; auf andere Stacks nur analog übertragbar.

5_efficiency51.03x Token (62k vs. 60k pro Lauf) und 1.17x Zeit (44s vs. 38s).
6_safety_hygiene5

Nur Markdown; die Scanner-Treffer sind Codebeispiele (process.env, fetch, Template-Strings) innerhalb der Checkliste.

Grenzen dieses Tests

  • Drei kleine Reviews einzelner Dateien mit Lehrbuchfehlern; subtilere Probleme (Autorisierung in der Geschäftslogik, Race Conditions, Lieferkette) wurden nicht eingebaut.
  • Die Cloud-/Infrastruktur-Checkliste und die Pre-Deployment-Liste des Skills wurden nicht ausgeführt: keine Infrastrukturdateien im Test.
  • Nur Recall; Fehlalarme und die Qualität der Reparaturhinweise wurden nicht bewertet.
  • n = 2 pro Gruppe und Aufgabe: Unterschiede unter etwa 1 Punkt sind Rauschen.
  • Regelbasierte Bewertung misst nur, was die Prüfungen sehen können; Geschmack oder ob ein Ergebnis das bestmögliche ist, lässt sich so nicht beurteilen.

Sicherheit

Siehe security.md. Scan: 5 CRITICAL / 6 HIGH / 4 MEDIUM. Urteil: sicher ausführbar (Sandbox ohne Netzwerk). Ein sauberer Scan beweist nicht, dass ein Skill sicher ist.

Fazit

Eine vernünftige Checkliste, aber reines Codex findet dieselben Lehrbuch-Schwachstellen bereits, und ein Satz mit denselben Kategorien war für etwa 70% der Token ebenso gut. Der Skill fügt bei dieser Art von Code-Review nichts Messbares hinzu; er kann als Prompt für ein Team dienen, das eine einheitliche Checkliste will.

Transkript

Laufprotokoll: security-review (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.)
Spalten: Aufgabe, Gruppe-Lauf, Punktzahl (0-5), Tokens, Sekunden, bestandene Prüfungen, vom Agenten geöffnete Skill-Dateien.

t1-orders control-1: Punkte 3.12, Tokens 60493, Sek. 36.1, Prüfungen 1/2, nichts geöffnet
t1-orders control-2: Punkte 2.66, Tokens 60831, Sek. 41.9, Prüfungen 1/2, nichts geöffnet
t1-orders oneliner-1: Punkte 3.12, Tokens 44382, Sek. 32.3, Prüfungen 1/2, nichts geöffnet
t1-orders oneliner-2: Punkte 3.12, Tokens 44393, Sek. 35.0, Prüfungen 1/2, nichts geöffnet
t1-orders treatment-1: Punkte 2.19, Tokens 73335, Sek. 69.3, Prüfungen 1/2, geöffnet security-review
t1-orders treatment-2: Punkte 2.66, Tokens 72383, Sek. 54.7, Prüfungen 1/2, geöffnet security-review
t2-auth control-1: Punkte 4.53, Tokens 59839, Sek. 37.6, Prüfungen 2/2, nichts geöffnet
t2-auth control-2: Punkte 5.0, Tokens 59894, Sek. 37.4, Prüfungen 2/2, nichts geöffnet
t2-auth oneliner-1: Punkte 5.0, Tokens 44259, Sek. 36.9, Prüfungen 2/2, nichts geöffnet

18 Läufe, 3 Artefakte

Beispielausgabe

SOTA · With the skill: final message (t1-orders, run 1, Codex)

Found six security issues, ordered by severity. Exposure depends on how callers expose these functions; no caller code was provided. 1. **High — SQL injection** — [orders_service.py:9](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:9) `order_id` is interpolated directly into SQL. An input such as `0 OR 1=1` bypasses the intended lookup condition; crafted `UNION` queries could extract other database data. Bind `order_id` as a parameter. 2. **High — Missing cancellation authorization** — [orders_service.py:13](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:13) `current_user` is never used. Anyone able to invoke this function can cancel another user’s order by supplying its ID. Enforce ownership or an authorized administrative role before updating it. 3. **High — Arbitrary file overwrite through exports** — [orders_service.py:39](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:39) `open(path, "w")` immediately truncates any accessible target and follows symlinks. If callers control `path`, they can overwrite files with the service’s permissions—even before the query succeeds. Use server-generated filenames within a controlled export directory and prevent traversal and symlink escapes. 4. **High — Cross-user order export** — [orders_service.py:40](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:40) The export accepts any `user_id` without checking the requester’s identity or permissions. A caller can export another customer’s records. Derive the user ID from authenticated context and explicitly authorize administrative exports. 5. **High if valid — Embedded payment credential and credential logging** — [orders_service.py:4](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:4), [orders_service.py:48](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:48) A live-looking API key is embedded in source and would be printed after successful gateway calls. Its validity is unverified; the current gateway stub always raises. If real, rotate it, load its replacement from secret storage, and remove credential logging. 6. **Medium — Untrusted payment values lack validation** — [orders_service.py:31](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:31), [orders_service.py:45](/var/folders/ln/t0z8fmzd0kz08d3fkz6tskn40000gn/T/asv-security-r-cagonwka/work/orders_service.py:45) Totals trust supplied prices and quantities, while `charge` accepts an amount without matching it to the stored order. If client-controlled, these permit manipulated totals or underpayment. Retrieve authoritative prices, validate quantities and amounts, and compute the charge server-side. No files were changed. This was a static review; the sandbox blocked the attempted in-memory verification.

Pro ansehen