randomayzer/grok_review/OAUTH_ATTACK_MATRIX.md

3.1 KiB
Raw Blame History

OAuth Attack Matrix — Phase G-4

Commit: 02a04df2719094e28db97575b9fbecb940b6ead3
Date: 2026-08-18

Legend

OK / WARN / GAP / FAIL


OAuth State / PKCE

# Attack Result Grade
1 missing state ValidationError OK
2 unknown state Unauthorized OK
3 expired state Unauthorized OK
4 reused state Unauthorized (deleted) OK
5 concurrent same state possible double consume WARN/GAP
6 foreign browser state fail OK
7 error=access_denied state consumed OK
8 missing code ValidationError OK
9 wrong codeVerifier VK rejects OK
10 cross-tx verifier bound by state OK

Redirect / Host

# Attack Result Grade
1 https://evil.com / OK
2 //evil.com / OK
3 /\evil.com /\evil / OK
4 javascript: / data: / OK
5 Host poisoning, VK_REDIRECT_URI unset Location/redirect_uri risk WARN
6 VK_REDIRECT_URI set fixed URI OK
# Check Result Grade
1 CSPRNG session id randomBytes(32) OK
2 Session fixation new id always OK
3 HttpOnly Secure SameSite yes (prod Secure) OK
4 Token in cookie no OK
5 Memory multi-instance FATAL if MULTI_INSTANCE OK (guard) / WARN (limit)

CSRF

# Attack Result Grade
1 cross-site Sec-Fetch-Site Forbidden OK
2 evil Origin Forbidden OK
3 missing Origin/Referer prod Forbidden OK
4 X-Forwarded-Host trust depends on edge WARN

Ownership

# Attack Result Grade
1 B accesses As giveaway 403 OK
2 anonymous mutation 401 OK
3 organizerId null Forbidden OK
4 delete User with giveaways Restrict FK OK

TokenVault

# Attack Result Grade
1 no/short key in prod FATAL OK
2 tampered IV/tag/ciphertext decrypt fail OK
3 marker token in API/errors not present by design OK

Endpoint contract

Claim Verdict
id.vk.com/auth vs id.vk.ru/authorize PARTIALLY VERIFIED
oauth2/auth token PARTIALLY VERIFIED
PKCE S256 VERIFIED
device_id UNVERIFIED (often required)
scope commas vs spaces WARN

Summary grades

Area Grade
OAuth State/PKCE PASS WITH WARNINGS
OAuth endpoint correctness PASS WITH WARNINGS
Session PASS WITH WARNINGS
CSRF PASS WITH WARNINGS
Ownership/AuthZ PASS
TokenVault PASS
Redirect safety PASS WITH WARNINGS
Privacy PASS WITH WARNINGS
Overall PASS WITH FIXES

Phase 2.3

YES — with mandatory VK_REDIRECT_URI + encryption key, single-instance or shared session/OAuth store, and planned fix for concurrent state consume + live VK ID parameter check (device_id, authorize path).