Claude Code security-review: kontrola kódu a GitHub Action
MarkdownJak zkontrolovat zabezpečení vibe projektu pomocí /security-review v Claude Code. Kroky nastavení, šablona GitHub Action, 6 typů zranitelností a upřímná omezení.
Přečíst celý článek
Autor původního materiálu popisuje svou zkušenost: „Právě jsem spustil security-review na vlastním vibe projektu a tým za 4 minuty našel několik skutečných problémů, které už byly opraveny.“ Stejná práce dříve zabrala externímu konzultantovi celý den.
Další materiály o konfiguraci nástrojů najdete v dokumentaci Ailoot.
Co je /security-review v Claude Code?
Hlavní poznatek
/security-review je vestavěný příkaz Claude Code, který přímo z terminálu provede bezpečnostní analýzu celého projektu nebo aktuálních změn. Anthropic jej uvedl 20. února 2026 jako součást Claude Code Security a zpřístupnil všem uživatelům Pro, Max a API Console. Požadavek se hradí z vašeho běžného zůstatku Claude API.
Příkaz funguje ve dvou režimech. Lokálně: spusťte v terminálu /security-review a Claude přečte repozitář a vytvoří zprávu. Na straně serveru: stejný engine se nainstaluje jako GitHub Action a automaticky přidává komentáře přímo do každého Pull Requestu.
Na rozdíl od klasických SAST skenerů (Snyk Code, Semgrep, SonarQube) /security-review nepracuje s pevně danými pravidly. Čte kód jako živý inženýr: sleduje tok dat, rozumí tomu, jaký framework používáte a kde leží hranice důvěry, a odhaluje zranitelnosti, které žádné pravidlo nepopisuje.
Claude Code Security čte váš kód a uvažuje o něm jako lidský bezpečnostní výzkumník: rozumí tomu, jak komponenty spolupracují, sleduje, jak se data pohybují aplikací, a odhaluje složité zranitelnosti, které nástroje založené na pravidlech přehlédnou.
To neznamená, že /security-review nahrazuje externí penetrační test nebo živé testování ve stagingovém prostředí. Může automatizovat část úvodní revize, článek ale neměří podíl pokrytí auditu. Níže vysvětlím, jak jej správně spustit a co Claude ve vašem projektu najde.
Jak v Claude Code spustit /security-review?
Hlavní poznatek
Aktualizujte Claude Code na nejnovější verzi, otevřete projekt v terminálu, spusťte /security-review, počkejte na zprávu (u průměrného projektu 1 až 5 minut), přečtěte si verdikty závažnosti a požádejte Claude, aby opravil nalezené problémy. Příkaz funguje s libovolným stackem: Next.js, Django, FastAPI, Rails, Go, Rust. Není potřeba žádná zvláštní konfigurace.
Krok 1. Aktualizujte Claude Code. Příkaz funguje od vydání z 20. února 2026.
claude update
Pokud jste Claude Code nainstalovali přes npm, můžete použít také tento příkaz:
npm install -g @anthropic-ai/claude-code@latest
Zkontrolujte, že se objevil /security-review:
claude /help | grep security
Krok 2. Otevřete projekt a přihlaste se do Claude Code.
cd ~/projects/my-vibe-project
claude
Krok 3. Spusťte příkaz. V Claude Code jednoduše zadejte:
/security-review
Claude automaticky provede 3 fáze analýzy:
- Průzkum kontextu repozitáře - přečte strukturu a určí stack, routy a databázové dotazy.
- Srovnávací analýza - porovná aktuální stav s typickými vzorci zranitelností pro tento stack.
- Posouzení zranitelností - vypíše každé podezření spolu se stupněm jistoty na škále od 1 do 10. Do zprávy se zahrnou pouze nálezy se stupněm jistoty ≥ 8.
Krok 4. Přečtěte si zprávu. Výstupem je tabulka v Markdownu. U každého problému Claude uvede:
- Soubor a číslo řádku (například
src/auth/login.ts:42) - Závažnost (HIGH / MEDIUM / LOW)
- Kategorie (
sql_injection,xss,auth_bypass,insecure_storage) - Popis - co je špatně
- Scénář zneužití - jak by toho mohl útočník využít
- Doporučení - jak problém opravit
Krok 5. Požádejte o provedení oprav. Potom s ním můžete pracovat jako s běžným agentem:
„Proveď opravy nálezů se závažností HIGH ze zprávy, jeden po druhém, a ke každému přidej popis PR.“
Claude otevře každý soubor a navrhne změnu; vy ji potvrdíte. Na skutečném projektu jsem za 40 minut uzavřel 5 nálezů namísto plánovaných 3 hodin.
Jaké zranitelnosti /security-review najde?
Hlavní poznatek
Claude odhaluje 6 tříd problémů: SQL injection a injekce obecně, XSS, problémy s autentizací a autorizací, úniky citlivých dat, mezery v zabezpečení závislostí třetích stran a natvrdo zadané tajné údaje v kódu. Příkaz si poradí také s logikou autentizace rozloženou do více souborů, což skenery založené na pravidlech nedokážou.
Úplný seznam toho, co je ve výchozím nastavení zahrnuto do analýzy, popisuje oficiální dokumentace Anthropic:
| Kategorie | Co hledá |
|---|---|
| SQL injection | Přímé spojování řetězců v SQL, nebezpečná volání ORM (raw() bez parametrů), Prisma $queryRawUnsafe |
| XSS | Vykreslování pomocí dangerouslySetInnerHTML bez sanitizace, šablonovací systémy bez automatického escapování, innerHTML z uživatelského vstupu |
| Chyby v autentizaci | Opakovaně použitelné tokeny, chybějící kontroly oprávnění v API routách, JWT bez data vypršení platnosti, fixace relace |
| Nezabezpečené zpracování dat | Validace pouze na straně klienta, odpovědi s nadbytečnými poli (over-fetching), open redirect |
| Zranitelnosti závislostí | Zranitelné verze balíčků npm/pip/cargo, kontrolované pomocí npm audit a ekvivalentních nástrojů |
| Tajné údaje | Natvrdo zadané API klíče, tokeny v .env.example, hesla v kódu |
Příkaz navíc pokrývá kategorie, které automatizované skenery kontrolují jen zřídka:
- Command injection - spuštění uživatelského vstupu v shellu (
child_process.exec(userInput)) - Path traversal - načtení souboru přes
../../etc/passwd - XXE - XML s externími entitami
- Template injection - SSTI v Jinja/Handlebars/EJS
- NoSQL injection - operátory
$ne,$gtv dotazech MongoDB - Zneužití kryptografie - použití MD5, režimu ECB nebo statického IV
Claude každému nálezu přiřadí závažnost. Stupnice je jednoduchá:
- HIGH - vzdálené zneužití bez autentizace, únik dat ovlivňující všechny uživatele
- MEDIUM - zneužití za dalších podmínek (je potřeba relace / konkrétní vstup)
- LOW - potenciální vektor, který nyní není kritický, ale stojí za opravu
Je dobré vědět: ve standardní konfiguraci Claude nehlásí DoS, omezení počtu požadavků, vyčerpání paměti, přesměrování bez prokázaného dopadu, injekce regulárních výrazů / ReDoS ani podvržení logů. Je to záměr, aby vás nezaplavoval šumem. Pokud jsou tyto třídy důležité, rozšiřte pravidla (viz níže část o filtrování falešně pozitivních nálezů).
Jak nastavit GitHub Action pro automatickou kontrolu?
Hlavní poznatek
Anthropic vydal oficiální akci anthropics/claude-code-security-review@main. Připojí se pomocí jediného souboru workflow a automaticky přidává do každého Pull Requestu komentáře přímo u nalezených zranitelností. Nastavte CLAUDE_API_KEY a oprávnění workflow. Oficiální Action varuje, že není zodolněná proti injekci promptu a má kontrolovat důvěryhodné PR; před zapnutím prověřte přístup přispěvatelů i workflow.
Krok 1. Získejte API klíč. Přejděte na console.anthropic.com, vytvořte API klíč a zkopírujte ho.
Krok 2. Uložte klíč do tajných údajů repozitáře. V GitHubu: Settings → Secrets and variables → Actions → New repository secret. Jako název zadejte CLAUDE_API_KEY; hodnotou bude váš klíč.
Krok 3. Vytvořte soubor workflow. Uložte jej jako .github/workflows/security.yml:
name: Security Review
permissions:
pull-requests: write
contents: read
on:
pull_request:
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
fetch-depth: 2
- uses: anthropics/claude-code-security-review@main
with:
comment-pr: true
claude-api-key: ${{ secrets.CLAUDE_API_KEY }}
Krok 4. Sloučte větev do main. Akce se automaticky spustí při dalším PR.
Co akce dělá:
- Spouští se při každém otevřeném Pull Requestu nebo synchronizaci jeho změn.
- Zjišťuje rozdíl mezi větví PR a větví main.
- Spouští stejný engine jako lokální
/security-review. - Přidává komentáře přímo k řádkům kódu, u nichž zjistí podezřelý problém.
- Kopíruje úplnou zprávu také do Job Summary.
Důležité podrobnosti v permissions:
pull-requests: write- pro přidávání komentářů přímo k řádkům.contents: read- pro čtení kódu. Žádnéwrite. Akce sama kód neupravuje, pouze hlásí nálezy.
Tato sada oprávnění stačí pro soukromý repozitář. U veřejného repozitáře můžete navíc zadat actions: read, pokud používáte opakovaně použitelná workflow.
Jak filtrovat falešně pozitivní nálezy a měnit citlivost?
Hlavní poznatek
Akce má 9 vstupních parametrů, kterými můžete nakonfigurovat její chování pro svůj projekt. Hlavní jsou: exclude-directories (například tests/,fixtures/), false-positive-filtering-instructions (cesta k souboru md s vašimi pravidly typu „tohle není zranitelnost, protože...“) a custom-security-scan-instructions pro další kontroly specifické pro danou doménu.
Úplná tabulka vstupních parametrů GitHub Action (zdroj: README repozitáře):
| Vstup | Výchozí hodnota | Co dělá |
|---|---|---|
claude-api-key | - | API klíč Anthropic. Povinný. |
comment-pr | true | Zda přidávat do PR komentáře přímo k řádkům |
upload-results | true | Zda ukládat výsledek jako artefakt na 90 dní |
exclude-directories | - | Seznam oddělený čárkami: tests/,docs/,fixtures/ |
claude-model | claude-opus-4-1-20250805 | Který model použít |
claudecode-timeout | 20 | Časový limit v minutách |
run-every-commit | false | Spouštět při každém pushi, nejen při PR |
false-positive-filtering-instructions | - | Cesta k souboru md s vašimi pravidly |
custom-security-scan-instructions | - | Cesta k souboru md s dalšími kontrolami |
Příklad konfigurace filtrování falešně pozitivních nálezů. Vytvořte soubor .claude/security/false-positives.md:
# Filtrování falešně pozitivních nálezů pro náš projekt
- Jakýkoli `dangerouslySetInnerHTML` uvnitř `src/lib/email/layout.ts` je bezpečný -
HTML se skládá z důvěryhodných šablon a při zápisu do databáze prochází přes `sanitize-html`,
nikoli při vykreslování.
- Nehlaste natvrdo zadané testovací API klíče v `__tests__/fixtures/*.ts`.
Všechny klíče začínají prefixem `sk-test-fake-`.
- Spojování SQL řetězců v `src/lib/admin/migrations.ts` je přijatelné - soubor se spouští
pouze s oprávněními root a vstupní data pocházejí z proměnných prostředí.
Připojte soubor ve workflow:
- uses: anthropics/claude-code-security-review@main
with:
comment-pr: true
claude-api-key: ${{ secrets.CLAUDE_API_KEY }}
false-positive-filtering-instructions: .claude/security/false-positives.md
Pokyny pro vlastní bezpečnostní kontrolu fungují podobně. Vytvořte soubor s pravidly, která jsou důležitá konkrétně pro váš projekt:
# Další kontroly pro náš projekt
- Každý endpoint pod `/api/admin/*` musí kontrolovat roli správce
prostřednictvím sdíleného wrapperu. Bez něj jde o závažnost HIGH.
- Všechny webhooky YooKassa / CloudPayments musí ověřit podpis před
parsováním těla požadavku. Bez toho jde o závažnost HIGH.
- Tokeny magic linku lze použít jen jednou (po
prvním platném požadavku se označí jako použité). Opakovaně použitelné tokeny mají závažnost MEDIUM.
Nejde už o přednastavení od Anthropic: předáváte své znalosti projektu v podobě pravidel, která Claude použije při každém spuštění. To je podstata „metodologie nad modelem“.
Další informace o metodice práce s kontextem pro Claude najdete v návodech „Jak nakonfigurovat CLAUDE.md“ a „Druhý mozek v Claude Code“.
Co Claude NEZACHYTÍ a proč: upřímná omezení?
Hlavní poznatek
Samotná kontrola kódu neprocvičí běžící aplikaci ani neověří nasazené prostředí. Může označit potenciální souběžné chyby, obchodní logiku či konfiguraci viditelnou v kódu, skutečné chování a zbývající rizika ale potvrzují stagingové testy a prohlídka nasazení.
Anthropic jasně uvádí, co je ve výchozím nastavení vypnuté a proč (zdroj: README repozitáře):
- Odepření služby - příliš mnoho šumu, téměř vždy malý dopad.
- Problémy s omezením počtu požadavků - řeší se na infrastrukturní úrovni, ne v kódu.
- Vyčerpání paměti / CPU - totéž.
- Obecná validace vstupu bez prokázaného dopadu - validace každého pole vytváří lavinu falešně pozitivních nálezů.
- Open redirect - často jde o zamýšlené chování.
Co samotná revize kódu bez důkazů běhu či nasazení plně neověří:
- Konfigurace produkčního serveru. Hlavičky NGINX, zásady CORS, nastavení TLS, naslouchající porty. Ty je potřeba ručně zkontrolovat ve stagingovém prostředí.
- Závody. Například dvojí útrata při souběžných požadavcích na vrácení peněz. Statická analýza může označit podezřelé vzory, souběžné chování ale stále potřebuje testování.
- Chyby obchodní logiky plateb. Pokud se celková částka objednávky vypočítá na klientovi a jednoduše odešle poskytovateli plateb, jde o závažnost HIGH. Claude ale tento vzorec nemusí vždy rozpoznat bez výslovného kontextu toho, jak má platba fungovat.
- IDOR na úrovni databáze. Pokud dotaz
SELECT * FROM orders WHERE id = $1nekontrolujeWHERE user_id = $session.userId, Claude to často zachytí. Pokud se ale kontrola provádí přes middleware ORM a Claude nevidí celý tok dat, může ji přehlédnout. - Odolnost vůči sociálnímu inženýrství / phishingu. S kódem to nesouvisí.
/security-review použijte jako úvodní statickou kontrolu. Doplňte ji dynamickými testy na stagingu, kontrolou rolí a oprávnění, vhodným SAST a prohlídkou skutečně nasazené konfigurace. Změřené procento pokrytí zde není prokázáno.
Rozsah a termín externího posouzení určete podle rizik a změn systému. Jediný příkaz ani pravidelný externí audit nedokazuje 100% bezpečnostní pokrytí.
Jak autor původního materiálu provedl bezpečnostní kontrolu vibe projektu
Hlavní poznatek
Spustil jsem /security-review na vlastním projektu v TypeScriptu s Next.js, Prisma, PostgreSQL a Redis. Za 4 minuty příkaz provedl úvodní audit, vrátil několik dobře podložených nálezů různé závažnosti a pracovní opravy jsem nakonec dokončil za hodinu a půl. Bylo to levnější a rychlejší než jakýkoli externí penetrační test.
Co se objevilo. Typický obraz průměrného vibe projektu ve fázi „funguje v produkci, ale nikdo ho nerevidoval“: několik podezření ohledně toku autentizace, logiky zpracování webhooků platební integrace, zpracování nahrávaných souborů a několik konkrétních poznámek ke zpracování HTML při vykreslování. Podrobnosti veřejně nepopisuji; některá doporučení už byla uplatněna a další jsou stále v PR. V uvedeném projektu byla úvodní kontrola užitečná a rychlá; nedokládá procento auditu ani obecnou dobu dokončení.
Co jsem vyřadil jako falešně pozitivní nálezy:
- Nálezy o DoS prostřednictvím regulárních výrazů při validaci vstupu - skutečná zátěž na tyto regulární výrazy nedopadá.
- Jeden nález natvrdo zadaného API klíče - šlo o testovací klíč s výslovným prefixem
fake-ve fixtures.
Jak dlouho to trvalo. Samotné spuštění trvalo 4 minuty. Kontrola zprávy zabrala 25 minut. Opravy s testy zabraly přibližně hodinu. Celkem: asi hodina a půl od „začal jsem“ po „všechno je v main“. Externí penetrační test stejného rozsahu trvá celý kalendářní týden a stojí mnohonásobně víc.
Hlavní závěr. /security-review nenahrazuje externí penetrační test. Může odhalit užitečné problémy v kódu, jako v autorově uvedeném čtyřminutovém skenu. Opravy zkontrolujte a otestujte, chování běžící aplikace a nasazení ověřte zvlášť; sken bezpečnostní riziko projektu neodstraní.
Jak začlenit /security-review do rutiny před commitem?
Hlavní poznatek
Před významným commitem spusťte /security-review v projektové relaci, přečtěte nálezy, opravte potvrzené problémy a zopakujte relevantní testy. Jde o postup kontroly, nikoli technický zákaz commitu.
Dříve uvedený hook s git_commit, --severity HIGH a --fail-on-find není dokumentovaný funkční recept a nesmí sloužit jako bezpečnostní brána. Článek neposkytuje ověřený místní hook blokující commit. Oficiální GitHub Action výše dodává automatické nálezy PR; z komentářů neodvozujte blokování commitů či sloučení.
Úplné vysvětlení hooků najdete v návodu „Hooky v Claude Code“.
Alternativou s využitím routines je vytvořit rutinu pre-deploy-check, která jedním příkazem spustí /security-review + npm run build + npm run test. Další materiály najdete v dokumentaci Ailoot.
Pokud používáte servery MCP, můžete nálezy z /security-review propojit se systémem pro incidenty (Sentry, Linear, Notion), aby se každý nález se závažností HIGH automaticky změnil na tiket.
Časté otázky o /security-review
Hlavní poznatek
5 častých otázek: kolik to stojí, jak často příkaz spouštět, s jakými stacky funguje, co dělat, pokud Claude už tuto zranitelnost našel, a zda jej lze spustit jen na konkrétních souborech. Stručné odpovědi bez zbytečné omáčky.
Kolik stojí jedno spuštění? Záleží na velikosti projektu. U mých 30K řádků spotřebuje jedno spuštění přibližně $0.30-0.50 ze zůstatku API. Velký podnikový repozitář s milionem řádků stojí až $5-8 za spuštění. To je mnohonásobně méně než předplatné libovolného SaaS skeneru.
Jak často bych měl příkaz spouštět lokálně? Minimálně před každým vydáním do produkce. Zvažte ji také před významnými commity a PR. Článek neposkytuje ověřený automatický hook blokující commit.
S jakými stacky funguje? S každým, který Claude dokáže přečíst. Podle pozorování autora byly ověřeny: Next.js / Node.js, Python (Django, FastAPI), Go, Rust, PHP (Laravel), Ruby on Rails. U velmi exotických jazyků (Erlang, Elixir, Clojure) je kvalita nižší, ale něco najde.
Co mám dělat, když Claude pokaždé najde stejnou „zranitelnost“, přestože o zranitelnost nejde? Přidejte ji do false-positive-filtering-instructions a vysvětlete „proč je to bezpečné“. Claude ji při dalších spuštěních přestane hlásit.
Lze příkaz spustit jen na konkrétních souborech? Lokálně ano: jednoduše spusťte /security-review src/lib/auth/*.ts. V GitHub Action se kontroluje pouze aktuální rozdíl PR, což obvykle odpovídá tomu, co se myslí „konkrétními soubory“.
Zdroje
Zdroje
- Anthropic - Oznámení o spuštění Claude Code Security - oficiální oznámení datované 20. února 2026
- Centrum nápovědy Anthropic - Automatizované bezpečnostní kontroly v Claude Code - oficiální pokyny ke spuštění
- GitHub: anthropics/claude-code-security-review - zdroj GitHub Action s úplným README
- Dokumentace Claude Code - Kontrola kódu - obecná dokumentace Anthropic
- Centrum nápovědy Anthropic - Používání Claude Security - související produkty
- Port - Příjem kontrol Claude Code Security - integrace výsledků do interního portálu pro vývojáře
- Historie změn Claude Code - historie vydání příkazu
Další materiály najdete v dokumentaci Ailoot.
Další podrobnosti
Časté otázky
Dokazuje čistá zpráva security-review bezpečnost aplikace?
Ne. Jde o úvodní kontrolu kódu s možnými přehlédnutími a filtrováním. Ověřte opravy, otestujte role a souběžnost na stagingu a prohlédněte skutečně nasazenou konfiguraci.
Blokuje uvedená GitHub Action automaticky commity či sloučení?
Uvedené workflow takovou záruku nedokládá. Publikuje nálezy v PR. Projděte je a potvrzené opravy otestujte; článek neposkytuje ověřený místní hook blokující commit.