Hooken cors er den deterministiske motor bag specialiseringen http-request, og du kan selv køre den. Den virker i to tilstande fra én kommando: en scanning, der gennemsøger kildekoden for en tilladelsesliste over origins, der kan omgås (et regex til validering af værter, som en angribers vært slipper forbi), og en vurdering, der klassificerer en enkelt CORS-origin som wildcard, null eller safe.
Scan en kodebase
Uden flag scanner den hele projektet.
- Hele projektet
- En mappe
- En enkelt fil
npx lagune read cors
npx lagune read cors --dir src/server
npx lagune read cors --file internal/auth/origin.go
Den oplister hver tilladelsesliste, der kan omgås, under én overskrift, grupperet efter fil. En værtsvalidator, hvis .+ eller .* står i authority-delen før suffikset for den betroede vært (^https?://.+\.trusted\.com), lader en angribers vært som your-site.com.attacker.com slippe forbi.
Origin-allowlist patterns with a greedy wildcard (bypassable, review):
internal/auth/origin.go
^https?://.+\.trusted\.com
Det er et spor at gennemgå, ikke et lukket fund: om regexet styrer en reel tillidsbeslutning, kan ikke afgøres ud fra teksten, så en scanning ændrer aldrig exitkoden. Læs hver enkelt, og bekræft, at tilladelseslisten sammenligner med fuld lighed. Når intet bliver fundet, udskriver den en enkelt linje.
npx lagune read cors --dir src/clean
# => no bypassable origin allowlist found
Vurdér en origin
Angiv hver origin med --origin. Hooken udskriver ét ord pr. origin og afslutter med en kode forskellig fra nul ved enhver wildcard eller null.
- Én origin
- Flere origins
npx lagune read cors --origin '*' # => wildcard
npx lagune read cors --origin 'null' # => null
npx lagune read cors --origin 'https://app.example.com' # => safe
Gentag --origin for at vurdere en hel tilladelsesliste i ét kald, én afgørelse pr. linje, i rækkefølge.
npx lagune read cors \
--origin 'https://app.example.com' \
--origin '*' \
--origin 'null'
# => safe
# => wildcard
# => null
| Afgørelse | Betydning |
|---|---|
safe | Hverken *, null eller et glob med *. Det garanterer ikke en velformet origin. |
wildcard | * eller et glob for underdomæne, vært eller port: ethvert websted (eller en bred mængde) må læse svaret. |
null | Origin null, som iframes i sandbox og omdirigeringer kan forfalske. |
Kun safe er en tilladelse, og --origin er et orakel for værdier: det vurderer værdien, ikke handleren, så bekræft handleren med specialiseringen http-request.
CLI-indstillinger
| Indstilling | Værdi | Beskrivelse |
|---|---|---|
--origin | en origin | Vurdér én origin-værdi. Gentag for at vurdere flere, én pr. linje. |
--dir | en mappe | Afgræns en scanning til en mappe. Kan gentages og kombineres med --file. |
--file | en fil | Afgræns en scanning til en enkelt fil. Kan gentages og kombineres med --dir. |
Uden indstillinger scanner den hele projektet. --origin er vurderingstilstanden og kan ikke kombineres med --dir eller --file.
Vælg, hvad den scanner
Den udelader det, Git ignorerer. For at udelade mere, eller for at scanne det, Git ignorerer, så giv cors sine egne indstillinger:
npx lagune write add --ignore test/fixtures --checker cors
{
"checkers": {
"cors": { "gitignore": false, "ignore": ["test/fixtures"] }
}
}
Konfigurér hooks beskriver alle indstillinger.
Scanningen læser formen med regex, der kan omgås, og --origin vurderer værdier af origins. To mønstre i kildekoden forbliver uden for rækkevidde: spejling af forespørgslens Origin (serveren sender den indkommende Origin uændret tilbage eller kombinerer den med loginoplysninger) og en eftergivende tilladelsesliste baseret på endsWith eller delstrenge. Genkend dem i koden, og behandl dem, som specialiseringen http-request beskriver.
Ofte stillede spørgsmål
Iframes i sandbox og visse omdirigeringer sender Origin: null, så en tilladelsesliste, der stoler på null, giver de kontekster læseadgang. Hooken cors markerer den sammen med wildcard.
Kør npx lagune read cors over kodebasen. Den markerer et regex til validering af værter, hvis grådige wildcard står før det betroede suffiks, så en angribers vært som your-site.com.attacker.com slipper forbi.
