Struktur Klasifikasi

Taksonomi ini mengorganisasi seluruh permukaan serangan OAuth/OIDC berdasarkan tiga sumbu ortogonal yang diturunkan dari analisis sistematis CVE, penelitian akademik (USENIX, IEEE, BlackHat/DEF CON), tulisan praktisi, dan pengungkapan bug bounty hingga tahun 2025.

Sumbu 1 — Target Mutasi (Utama): Komponen struktural protokol OAuth yang dimutasi atau dieksploitasi. Sumbu ini membentuk bagian utama dokumen dalam 10 kategori tingkat atas yang mencakup alur redirect, kode otorisasi/token, identitas klien, identitas pengguna, consent/scope, sesi/state, siklus hidup token, pemilihan alur protokol, infrastruktur sisi server, serta arsitektur lintas-protokol/integrasi.

Sumbu 2 — Jenis Ketidaksesuaian (Lintas-Bidang): Sifat ketidakcocokan atau bypass yang diciptakan oleh setiap mutasi. Setiap teknik mengeksploitasi satu atau lebih jenis ketidaksesuaian berikut:

KodeJenis KetidaksesuaianDeskripsi
D1Bypass ValidasiValidasi redirect_uri, scope, atau klien tidak ada atau tidak memadai
D2Kebingungan IdentitasIdentitas pengguna, klien, atau IdP salah diatribusikan atau dipalsukan
D3Kebocoran Token/KodeMateri otorisasi lolos ke pihak yang tidak dimaksudkan
D4Manipulasi StateIntegritas sesi, state CSRF, atau nonce rusak
D5Eskalasi Hak IstimewaIzin yang diberikan melebihi yang telah diotorisasi
D6Kebingungan ProtokolDowngrade alur, mix-up, atau ketidaksesuaian lintas-protokol
D7Eksploitasi TemporalRace condition, replay, atau penyalahgunaan masa hidup token

Sumbu 3 — Skenario Serangan (Pemetaan): Hasil dunia nyata: pengambilalihan akun, pencurian token, akses persisten, SSRF, phishing, kompromi rantai pasok, atau pergerakan lateral. Dipetakan dalam §11.


§1. Manipulasi Redirect URI

Parameter redirect_uri adalah target utama serangan OAuth karena mengontrol ke mana materi otorisasi (kode, token) dikirimkan. Kelemahan apa pun dalam validasi redirect URI menciptakan jalur langsung menuju pencurian kredensial.

§1-1. Teknik Bypass Validasi

Server otorisasi harus memverifikasi bahwa redirect_uri dalam permintaan otorisasi sama persis dengan URI yang telah terdaftar sebelumnya. Kegagalan dalam validasi ini menciptakan kelas kerentanan OAuth yang paling luas.

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Tanpa validasiServer menerima nilai redirect_uri apa pun tanpa memeriksa URI yang terdaftarAS tidak memiliki penegakan daftar izinD1
Pencocokan domain sajaServer hanya memvalidasi domain/origin, mengabaikan komponen path, query, dan fragment. Penyerang menggunakan https://legitimate.com/attacker-controlled-pathAS memeriksa origin tetapi bukan path lengkapD1
Pencocokan subdomainServer memvalidasi *.example.com, memungkinkan attacker.example.com atau mengeksploitasi pengambilalihan subdomainValidasi berbasis wildcard atau suffixD1
Path traversalPenyerang menambahkan urutan /../ atau /..\ untuk keluar dari prefix path yang divalidasi, misalnya https://client.com/callback/../attackerServer menormalisasi path setelah validasiD1
Kebingungan path (diferensial parser)Server otorisasi dan browser tidak sepakat tentang komponen path dari redirect URI karena diferensial parser URL. AS memvalidasi path yang tampak aman, tetapi browser menginterpretasikan URI yang sama dengan path efektif yang berbeda karena perbedaan penanganan ;, pembatas yang dikodekan, atau urutan normalisasi path — berbeda dari traversal /../ sederhana, ini mengeksploitasi ketidaksepakatan struktural pada batas komponen pathBeberapa parser URL dalam rantai redirect dengan logika ekstraksi path yang berbeda; parser path AS ≠ parser path browser (ACM CCS, 2023)D1, D6
Parameter pollutionMenyuntikkan parameter redirect_uri duplikat; server menggunakan yang pertama untuk validasi tetapi yang terakhir untuk pengalihan (atau sebaliknya)Penguraian parameter yang tidak konsistenD1, D6
Bypass regexMengeksploitasi pola regex yang cacat — jangkar yang hilang (^, $), titik yang tidak di-escape, atau quantifier yang tamak. Misalnya redirect_uri=https://legitimateXcom.attacker.comValidasi regex kustom alih-alih pencocokan persisD1
Manipulasi skemaMengubah https:// menjadi http://, skema kustom (myapp://), atau URI javascript:AS tidak menegakkan batasan skemaD1
Injeksi fragmentMenambahkan #fragment ke redirect URI; beberapa server mengabaikan fragment selama validasi tetapi browser mempertahankannya selama redirectPenanganan fragment yang tidak konsistenD1, D3
Bypass Unicode/encodingMenggunakan karakter yang di-encode URL, double-encode, atau Unicode (misalnya %2F untuk /, karakter lebar penuh) untuk melewati perbandingan stringValidasi terjadi sebelum normalisasi URLD1
Injeksi whitespaceMenyisipkan karakter whitespace (spasi, tab, baris baru, atau whitespace Unicode) ke dalam redirect_uri untuk membingungkan validasi URL. Validator memperlakukan input sebagai aman atau menormalisasi whitespace berbeda dari browser/klien HTTP, menyebabkan redirect mengarah ke tujuan yang dikontrol penyerang dan membocorkan token OAuth — draw.io (2023) menunjukkan kebocoran token melalui redirect URI yang disuntikkan whitespaceValidasi URL tidak menolak atau menormalisasi whitespace tertanam; diferensial parser antara validator dan klien HTTPD1, D3
Manipulasi portMenentukan port non-standar dalam redirect_uri ketika validasi mengabaikan nomor port, misalnya https://legitimate.com:8443/callbackPort tidak termasuk dalam validasiD1
Bypass daftar izin alamat loopbackServer otorisasi yang mengimplementasikan RFC 8252 (OAuth untuk Aplikasi Native) mengizinkan port apa pun pada alamat loopback (127.0.0.1, [::1], localhost) sebagai redirect URI yang valid untuk klien native. Penyerang menjalankan server HTTP lokal pada port sembarang dan membuat redirect_uri=http://127.0.0.1:{port}/callback; AS menerimanya karena redirect loopback secara eksplisit diizinkan oleh spesifikasi. Dikombinasikan dengan ketidaksesuaian penguraian userinfo IPv6 (misalnya bentuk http://[::1]), pemeriksaan 127.0.0.1-saja yang lebih ketat juga dapat dilewatiAS mengimplementasikan pengecualian loopback RFC 8252; korban memulai alur OAuth dengan redirect_uri penyerang yang mengarah ke localhost (penelitian OSEC “How We Broke Exchanges”, 2025)D1

§1-2. Rantai Open Redirect

Ketika server otorisasi menegakkan pencocokan redirect_uri yang ketat tetapi aplikasi klien mengandung kerentanan open redirect, penyerang merantai keduanya untuk membocorkan materi otorisasi.

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Rantai open redirect klasikredirect_uri=https://client.com/redirect?url=https://attacker.com — kode/token mendarat di klien, lalu segera dialihkan ke penyerangKlien memiliki endpoint open redirect di bawah domain yang terdaftarD1, D3
Kebocoran berbasis RefererSetelah redirect ke klien, halaman klien memuat sumber daya eksternal; header Referer membocorkan kode otorisasi dari string query URL ke pihak ketigaHalaman klien menyertakan gambar, skrip, atau piksel pelacakan eksternalD3
Persistensi fragment dalam redirectDalam implicit flow, access token ada di fragment URL (#access_token=...). Selama redirect sisi klien, fragment dipertahankan oleh browser dan dapat bocor ke tujuan yang dikontrol penyerangImplicit flow + open redirect pada klienD3
Kebocoran melalui halaman proxyHalaman klien dengan postMessage atau window.name yang dapat dibaca lintas-origin bertindak sebagai proxy untuk eksfiltrasi tokenKlien menggunakan postMessage tanpa validasi originD3
Kebocoran melalui directory listingRedirect ke direktori pada klien yang menyajikan halaman indeks dengan tautan eksternal, membocorkan kode melalui RefererKlien menyajikan konten yang dapat dikontrol pengguna di bawah path yang terdaftarD3

§1-3. Pembajakan Skema Redirect Mobile

Implementasi OAuth mobile menggunakan skema URI kustom (misalnya myapp://callback) yang tidak unik secara global, menciptakan peluang intersepsi.

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Tabrakan skema kustomBeberapa aplikasi mendaftarkan skema URI kustom yang sama; OS mengirimkan redirect ke aplikasi yang salah (berbahaya)Android/iOS mengizinkan pendaftaran skema duplikatD2, D3
Pembajakan Intent Filter (Android)Aplikasi berbahaya mendaftarkan Intent Filter yang lebih spesifik untuk URI callback OAuth, mendapatkan prioritas di atas aplikasi yang sahAplikasi penyerang cocok dengan URI dengan spesifisitas lebih tinggiD3
Bypass Claimed URLMelewati verifikasi Android App Links atau iOS Universal Links untuk mencegat redirect berbasis HTTPS.well-known/assetlinks.json atau apple-app-site-association yang tidak dikonfigurasi dengan benarD3

§2. Penanganan Authorization Code & Token

Authorization code adalah kredensial bearer yang dipertukarkan untuk token. Serangan dalam kategori ini menargetkan alur code grant, pertukaran token, dan mekanisme yang mengikat kode ke penerimanya yang dimaksudkan.

§2-1. Intersepsi & Injeksi Authorization Code

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Intersepsi kode melalui redirectPenyerang mendapatkan authorization code melalui manipulasi redirect URI (§1) dan menukarkannya di token endpoint sebelum klien yang sahTidak ada PKCE; kode adalah kredensial bearerD3
Injeksi kode (login CSRF)Penyerang memulai alur OAuth, mendapatkan kode yang terikat ke identitas mereka sendiri, lalu menyuntikkannya ke URL callback korban. Sesi korban kini terhubung ke akun penyerangValidasi parameter state yang hilang atau lemahD4
Replay kodeMenggunakan ulang authorization code yang sebelumnya valid jika AS tidak membatalkannya setelah penggunaan pertama atau memiliki jendela waktu yang lebarAS mengizinkan penggunaan ulang kode atau memiliki masa hidup kode yang panjangD7
Downgrade PKCEPenyerang menghapus parameter code_challenge dari permintaan otorisasi atau memaksa fallback ke metode plain. Jika AS tidak mewajibkan PKCE, kode menjadi dapat disadapAS tidak mewajibkan PKCE untuk semua klienD6
Bypass PKCE melalui open redirectBahkan dengan PKCE, jika kode bocor ke penyerang melalui open redirect pada domain klien (§1-2), penyerang dapat mencuri kode. Namun, mereka tetap memerlukan code_verifier — kecuali endpoint klien sendiri memproses kode secara otomatisKlien secara otomatis menukar kode tanpa verifikasi PKCED1, D3
Injeksi authorization code melalui replay responsPenyerang menangkap respons otorisasi yang valid dari deviasi alur non-happy-path — misalnya AS mengembalikan kode valid pada jalur error, consent parsial, atau kasus tepi yang menyimpang dari RFC — dan memutar ulang seluruh URL callback terhadap sesi browser korban. Tidak seperti login CSRF (yang menggunakan kode penyerang sendiri) atau replay kode sederhana (yang menggunakan ulang kode di token endpoint), ini mengeksploitasi deviasi perilaku AS dari RFC yang membocorkan kode yang dapat digunakan melalui jalur respons tak terdugaAS mengembalikan kode valid pada jalur alur non-standar; kode tidak terikat ke sesi browser asal melalui PKCED3, D7

§2-2. Vektor Kebocoran Token

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Paparan token implicit flowAccess token yang dikirim dalam fragment URL dapat diakses oleh JavaScript di halaman, termasuk skrip yang disuntikkan (XSS)Penggunaan implicit flow yang sudah usangD3, D6
Token dalam riwayat browserAuthorization code atau token muncul dalam URL, tersimpan dalam riwayat browser, log proxy, dan log akses serverKode/token dikirim melalui parameter queryD3
Token melalui postMessageHalaman klien menggunakan window.postMessage() untuk berkomunikasi token lintas-origin tanpa pembatasan targetOrigin yang tepatValidasi origin yang hilang dalam handler postMessageD3
Token dalam respons errorServer otorisasi atau klien menyertakan token/kode dalam parameter redirect error, mengeksposnya dalam log atau ke pihak ketigaPenanganan error verbose yang mencerminkan parameter sensitifD3
Token melalui WebSocketKlien mengirimkan token melalui WebSocket yang tidak terenkripsi atau ke endpoint WebSocket yang dapat diamati penyerangImplementasi WebSocket tidak aman untuk transport tokenD3
Kebocoran kode callback melalui pemblokiran navigasiMekanisme pemblokiran navigasi browser (event handler beforeunload, window.stop(), iframe yang lambat dimuat) menunda atau mencegah redirect callback OAuth dari penyelesaian. Selama jeda navigasi, authorization code terlihat di URL yang tertunda, memungkinkan skrip yang dikontrol penyerang di halaman (melalui rantai open redirect atau XSS pada halaman di jalur redirect) untuk mengekstrak kode sebelum endpoint klien memprosesnyaPenyerang memiliki eksekusi skrip pada halaman dalam rantai redirect; browser mendukung intersepsi navigasiD3
Penghentian redirect tingkat browserBatas sumber daya browser dan server menciptakan primitif pemblokiran redirect di luar intersepsi JavaScript: penolakan skema protokol (about:, URI data:about:blank#blocked), perlindungan dangling markup (Chrome memblokir <\t dalam URL), overflow panjang URL (>2MB), cookie bombing (~400KB cookie yang dicakupkan ke path callback → HTTP 431), payload pemicu-WAF dalam parameter state, dan pembatasan laju navigasi (>200 navigasi/10 detik). URL redirect yang diblokir tetap ada dalam navigation.entries() Navigation API, dapat dibaca lintas-origin dari jendela openerPenyerang dapat memicu redirect ke callback OAuth; browser menegakkan batas URL/navigasi; Navigation API tersedia (Chromium)D3
Pemblokiran redirect berbasis sandboxMembuka callback OAuth di jendela yang dihasilkan dari iframe yang di-sandbox (<iframe sandbox="allow-scripts allow-popups">, tanpa allow-forms atau allow-top-navigation) memblokir redirect berbasis form dan navigasi sambil mempertahankan eksekusi skrip dan akses API same-origin. Authorization code tetap di URL yang tertunda, dapat diekstrak oleh skrip penyerang sebelum redirect selesaiPenyerang mengontrol iframe dengan atribut sandbox pada halaman dalam rantai redirect; sandbox mengizinkan skrip tetapi membatasi form/navigasiD3

§2-3. Serangan Token Exchange

SubtipeMekanismeKondisi UtamaKetidaksesuaian
CSRF token endpointPenyerang mengirimkan permintaan token palsu dengan kode yang dicuri ke token endpoint server otorisasiToken endpoint tidak memvalidasi client secret atau menggunakan klien publikD4
Peningkatan scope saat token exchangePenyerang memodifikasi parameter scope dalam permintaan token untuk menyertakan hak istimewa yang lebih tinggi dari yang awalnya diotorisasiAS menerima parameter scope di token endpoint tanpa membandingkan dengan otorisasi asalD5
Brute-force client secretMenyerang token endpoint untuk menebak nilai client_secret untuk klien rahasiaTidak ada pembatasan laju pada token endpoint; client secret yang lemahD1

§3. Identitas & Pendaftaran Klien

Identitas klien OAuth menentukan akses apa yang diterimanya. Serangan di sini menargetkan autentikasi klien, pendaftaran, dan peniruan.

§3-1. Penyalahgunaan Dynamic Client Registration

Dynamic client registration OAuth/OIDC (RFC 7591) memungkinkan pembuatan klien secara terprogram, memperkenalkan permukaan serangan sisi server.

SubtipeMekanismeKondisi UtamaKetidaksesuaian
SSRF melalui logo_uriMendaftarkan klien dengan logo_uri yang mengarah ke sumber daya internal; AS mengambil dan mengembalikan kontennya saat merender halaman consentAS me-resolve logo_uri sisi server tanpa perlindungan SSRFD1
SSRF melalui jwks_uriMenetapkan jwks_uri ke endpoint internal; AS mengambilnya saat memvalidasi assertion JWT klienAS me-resolve jwks_uri tanpa batasan jaringanD1
SSRF melalui sector_identifier_uriURL khusus OIDC ini mengarah ke array JSON dari redirect URI; AS mengambilnya selama validasiAS me-resolve URI tanpa kontrol SSRFD1
SSRF melalui request_urisMendaftarkan request_uris yang mengarah ke sumber daya internal; AS mengambilnya saat memproses pushed authorization requestAS mendukung PAR dan me-resolve request URID1
XSS melalui logo_uri / client_nameMenyuntikkan payload skrip ke dalam metadata klien yang dirender di layar consentAS merender metadata klien tanpa sanitasiD1
Pendaftaran redirect sembarangMendaftarkan klien baru dengan redirect URI yang dikontrol penyerang, lalu menggunakan session poisoning (§6-2) untuk mengarahkan token ke klien baruEndpoint pendaftaran terbuka tanpa persetujuan adminD1, D4

§3-2. Peniruan Klien

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Spoofing klien publikKarena klien publik (SPA, aplikasi mobile) tidak memiliki client_secret, pihak mana pun yang mengetahui client_id dapat meniru klien tersebutKlien publik tanpa penegakan PKCED2
Kebocoran client secretClient secret yang terekspos dalam kode sisi klien, version control, atau pesan error, memungkinkan penyerang bertindak sebagai klien yang sahSecret disimpan dalam artefak publik (bundle JS, APK mobile, repo Git)D2, D3
Spoofing dokumen metadata client IDDalam MCP dan spesifikasi terbaru yang menggunakan client ID berbasis URL, penyerang mengklaim URL metadata klien yang sah sebagai client_id mereka sendiri, mengikat ke redirect localhostURL dokumen metadata digunakan sebagai client_id tanpa verifikasi kepemilikanD2
Penyalahgunaan aplikasi first-partyMengeksploitasi aplikasi first-party yang telah di-pre-consent (misalnya Azure CLI, Azure PowerShell) yang memiliki izin hak istimewa tinggi di semua tenant enterpriseAplikasi yang di-pre-consent dengan scope Directory.ReadWrite.All atau serupaD2, D5

§4. Identitas Pengguna & Claims

OAuth mendelegasikan autentikasi; OIDC memperluas dengan identity claim. Serangan di sini menargetkan cara identitas pengguna ditetapkan, diverifikasi, dan digunakan.

§4-1. Serangan Identity Binding

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Kebingungan claim yang dapat diubahAplikasi mengidentifikasi pengguna berdasarkan kolom yang dapat diubah (email, username) daripada claim sub yang tidak dapat diubah. Penyerang mengubah email mereka di IdP agar cocok dengan email korban di klienKlien menggunakan email atau preferred_username sebagai pengidentifikasi utamaD2
Pengambilalihan akun sebelum pendaftaranPenyerang membuat akun di klien menggunakan email korban (tanpa verifikasi), lalu menunggu korban “Sign in with OAuth” — identitas OAuth bergabung dengan akun yang telah dibuat sebelumnya di bawah kendali penyerangKlien mengizinkan pembuatan akun tanpa verifikasi emailD2
Pembajakan account linkingKetika klien mendukung beberapa provider OAuth, penyerang memaksa penghubungan akun IdP mereka ke akun korban yang sudah ada dengan memanipulasi alur penghubunganTidak ada perlindungan CSRF pada endpoint account linkingD2, D4
Bypass verifikasi emailIdP menyediakan email_verified: false dalam ID token, tetapi klien mengabaikan tanda ini dan mempercayai email sebagai terverifikasiKlien tidak memeriksa claim email_verifiedD2
Tabrakan claim sub lintas-IdPIdP yang berbeda mungkin menggunakan nilai sub yang sama (misalnya ID numerik). Klien yang menggunakan sub tanpa menetapkan cakupan ke penerbit menciptakan tabrakan identitas lintas-IdPKlien menyimpan sub tanpa pengikatan issD2
Over-provisioning aplikasi multi-tenantAplikasi Azure AD yang terdaftar sebagai multi-tenant tanpa daftar izin tenant memungkinkan tenant Azure AD mana pun untuk mendapatkan access token yang valid untuk layanan internal. Penelitian “BingBang” Wiz (2023) menunjukkan akses tidak sah ke manipulasi hasil pencarian Bing.com dan data Office 365 melalui aplikasi Microsoft internal yang over-provisionedAplikasi Azure AD multi-tenant tanpa validasi tenant ID eksplisit; konfigurasi default menerima token dari semua tenant AzureD1, D2

§4-2. Injeksi Identitas

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Pemalsuan ID tokenPenyerang memalsukan ID token dengan claim sembarang jika klien tidak memvalidasi tanda tangan JWT, atau kunci penandatangan dikompromikan/lemahKlien melewati verifikasi tanda tangan atau menggunakan alg: noneD2
Injeksi claim melalui userinfoPenyerang memodifikasi claim yang dikembalikan oleh endpoint userinfo jika klien mengambil data pengguna melalui saluran tidak aman atau tidak memvalidasinya terhadap claim ID tokenEndpoint userinfo yang tidak dilindungi atau kurangnya validasi silangD2
Audience injectionKelas serangan baru (2025) yang mengeksploitasi penanganan audience dalam autentikasi klien berbasis tanda tangan. AS penyerang mengklaim URI penerbit AS yang jujur sebagai token endpoint-nya; klien mengirimkan kredensial ke endpoint penyerang dengan keyakinan itu adalah AS yang jujurKlien berinteraksi dengan beberapa instance AS dan tidak mengikat audience ke penerbitD2, D6

Model otorisasi OAuth bergantung pada consent pengguna dan batas scope. Serangan di sini melewati consent atau meningkatkan izin yang diberikan.

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Consent phishingPenyerang membuat aplikasi OAuth yang tampak sah dengan nama yang menipu (“Security Compliance Tool”, “Data Loader”) dan meminta scope berbahaya melalui rekayasa sosialPengguna menyetujui scope yang luas tanpa memahami implikasinyaD5
Hidden consent grantMenggunakan izin yang didelegasikan Directory.ReadWrite.All untuk memanggil API oauth2PermissionGrant, secara terprogram memberikan izin yang didelegasikan tambahan (misalnya RoleManagement.ReadWrite.Directory) ke aplikasi berbahaya tanpa interaksi penggunaPenyerang sudah memegang izin penulisan direktoriD5
Eksploitasi aplikasi yang di-pre-consent (AuthCodeFix/ConsentFix)Mengeksploitasi aplikasi first-party (Azure CLI, Azure PowerShell) dengan izin yang di-pre-consent secara luas di semua tenant enterprise. Penyerang mencuri kode autentikasi untuk aplikasi ini dan menukarkannya dengan token hak istimewa tinggiAplikasi yang di-pre-consent ada dengan scope yang terlalu luasD5, D2
Akumulasi scope bertahapMeminta scope minimal pada awalnya, lalu secara bertahap meminta scope tambahan dalam alur otorisasi berikutnya. Pengguna terbiasa dan menyetujui izin yang semakin berbahayaAplikasi mendukung incremental consentD5
Phishing admin consentMenargetkan administrator untuk memberikan admin_consent bagi suatu aplikasi, melewati consent per-pengguna dan memberikan akses seluruh organisasiOrganisasi target mengizinkan admin consent; admin direkayasa secara sosialD5

§5-2. Manipulasi Scope

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Injeksi parameter scopeMemodifikasi parameter scope dalam permintaan otorisasi untuk menyertakan izin tambahan di luar yang biasanya diminta aplikasiAS tidak membatasi scope yang dapat diminta per klienD5
Peningkatan scope saat token exchangeMenyertakan scope yang ditingkatkan dalam permintaan token yang tidak ada dalam permintaan otorisasi asal (lihat §2-3)AS menerima dan menghormati parameter scope di token endpointD5
Persistensi offline accessMenyertakan scope offline_access untuk mendapatkan refresh token yang memberikan akses jangka panjang di luar sesi penggunaAS memberikan offline_access tanpa pemahaman eksplisit penggunaD5, D7
Kombinasi scope berbahayaScope yang secara individual tidak berbahaya yang menciptakan kemampuan berbahaya saat dikombinasikan (misalnya Application.ReadWrite.All + AppRoleAssignment.ReadWrite.All = eskalasi hak istimewa penuh)Tidak ada mesin kebijakan yang mengevaluasi risiko scope yang digabungkanD5

§6. Manajemen Sesi & State

OAuth bergantung pada sesi browser, parameter state, dan nonce untuk menjaga integritas alur. Serangan di sini merusak pengikatan ini.

§6-1. Serangan CSRF & State

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Parameter state yang hilangTidak ada parameter state dalam permintaan otorisasi; penyerang memalsukan URL callback dengan authorization code mereka sendiri, menghubungkan sesi korban ke identitas penyerangKlien menghilangkan state atau tidak memvalidasinyaD4
State yang dapat diprediksiParameter state dapat ditebak (berurutan, berbasis timestamp, atau diturunkan dari nilai yang diketahui); penyerang menghitung nilai state yang valid sebelumnyaPRNG yang lemah atau pembuatan state yang deterministikD4
State fixationPenyerang memulai alur OAuth, menangkap nilai state, lalu menipu korban untuk menyelesaikan alur dengan state penyerang, menyebabkan klien mengasosiasikan token yang dihasilkan dengan sesi penyerangState tidak terikat secara kriptografis ke sesi penggunaD4
Kebingungan state lintas-tabPengguna memiliki beberapa tab terbuka; respons otorisasi dari satu alur dikonsumsi oleh sesi OAuth tab yang berbeda karena state cookie yang dibagikanKlien menggunakan cookie (bukan penyimpanan per-tab) untuk pelacakan stateD4

§6-2. Session Poisoning

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Penimpaan sesi otorisasiAS menyimpan parameter otorisasi (client_id, redirect_uri) dalam sesi sisi server. Permintaan bersamaan menimpa nilai yang tersimpan, menyebabkan respons dikirim ke redirect URI penyerangAS menggunakan penyimpanan parameter berbasis sesi (bukan berbasis request-ID)D4, D3
Mass assignment pada consent endpointMass assignment framework (misalnya Spring @ModelAttribute) memungkinkan penyerang untuk menyuntikkan parameter seperti redirectUri langsung ke permintaan konfirmasi consent, melewati validasi awalFramework secara otomatis mengikat parameter permintaan ke objek sesi (CVE-2021-27582)D4, D1
Cookie clobberingPenyerang menetapkan atau menimpa cookie dari domain terkait yang digunakan klien OAuth untuk pelacakan sesi, mengganggu validasi stateCakupan cookie domain terkait atau kerentanan cookie tossingD4

§6-3. Nonce & Replay

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Validasi nonce yang hilangKlien tidak menyertakan atau memvalidasi nonce dalam ID token, memungkinkan replay ID token yang disadap dari sesi sebelumnyaKlien menghilangkan nonce atau melewati verifikasiD7
Replay ID tokenPenyerang menangkap ID token yang valid (melalui intersepsi jaringan atau XSS) dan memutarnya ulang ke klien untuk mendirikan sesi terautentikasiTidak ada nonce; jendela exp yang panjang; klien tidak melacak penggunaan tokenD7
Replay respons otorisasiMemutar ulang seluruh respons otorisasi (kode + state) jika kode belum dibatalkan dan state masih validAS tidak menegakkan kode satu kali pakai; klien tidak membuang stateD7

§7. Siklus Hidup & Persistensi Token

Setelah token dikeluarkan, siklus hidupnya menciptakan permukaan serangan yang diperpanjang. Kategori ini mencakup penyalahgunaan token pasca-penerbitan.

§7-1. Pencurian Token

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Ekstraksi token berbasis XSSInjeksi JavaScript mengekstrak access token dari localStorage, sessionStorage, atau variabel dalam memoriToken disimpan di lokasi yang dapat diakses browser; kerentanan XSS adaD3
Token dari penyimpanan browserAccess/refresh token yang disimpan dalam localStorage dapat diakses oleh skrip mana pun yang berjalan di origin yang sama, termasuk skrip pihak ketiga yang disuntikkanToken disimpan dalam localStorage alih-alih cookie httpOnlyD3
Token dari credential storeMengekstrak token OAuth dari manajer kredensial OS, file konfigurasi, atau variabel lingkungan pada host yang dikompromikanToken disimpan dalam plaintext di diskD3
Token dari kebocoran repositoriToken OAuth (terutama refresh token berumur panjang atau client secret) yang di-commit ke sistem version controlSecret dalam kode sumber atau file konfigurasiD3
Token dari paparan proxy/logToken yang muncul dalam log server, log CDN, atau log proxy ketika dikirimkan sebagai parameter URL daripada headerToken dikirim sebagai parameter query alih-alih header AuthorizationD3
Pass-the-TokenMenggunakan access token OAuth yang dicuri secara langsung terhadap server sumber daya, melewati kebutuhan akan kredensial atau MFAToken bearer diterima tanpa batasan pengirimD3

§7-2. Persistensi & Penyalahgunaan Token

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Persistensi refresh tokenRefresh token tetap valid selama 90+ hari. Penyerang dengan refresh token yang dicuri terus mencetak access token baru, mempertahankan akses tanpa batasTidak ada rotasi refresh token; masa hidup token yang panjangD7
Persistensi device codeKode otorisasi perangkat mendapatkan refresh token yang bertahan di berbagai sesi; penyerang mempertahankan akses tanpa autentikasi ulangToken device flow tidak dibatasi scope atau waktuD7
Token tidak dicabut saat penggantian kata sandiPengguna mengubah kata sandi tetapi token OAuth yang ada tetap valid, memungkinkan penyerang yang sebelumnya mencuri token untuk mempertahankan aksesAS tidak membatalkan token saat perubahan kredensialD7
Zombie token dalam rantai pasokToken integrasi pihak ketiga (misalnya konektor Salesforce) tetap aktif lama setelah hubungan integrasi berakhir. Satu token integrasi yang dikompromikan memberikan akses ke ratusan lingkungan pelanggan (insiden UNC6395/Drift, 2025)Tidak ada manajemen siklus hidup token integrasiD7, D3
Pergerakan lateral melalui Graph APIMenggunakan token OAuth yang dicuri untuk mengenumerasi tenant, pengguna, dan aplikasi terhubung melalui Microsoft Graph API, lalu melakukan pivot ke layanan tambahanToken memiliki scope Graph API; lingkungan SaaS yang saling terhubungD5, D7

§8. Pemilihan & Kebingungan Alur Protokol

OAuth mendefinisikan beberapa jenis grant. Serangan di sini mengeksploitasi pemilihan, downgrade, atau kebingungan antara alur.

§8-1. Eksploitasi Downgrade Alur & Deprecation

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Eksploitasi implicit flowMemaksa atau mengeksploitasi penggunaan implicit flow (yang sudah usang dalam OAuth 2.1) di mana token terekspos dalam fragment URL, dapat diakses oleh JavaScript dan bocor melalui RefererAplikasi masih mendukung implicit flowD6, D3
Penyalahgunaan ROPC (Resource Owner Password Credentials)Mengeksploitasi aplikasi yang menerima username/password secara langsung, melewati UI autentikasi server otorisasi dan MFA apa punAplikasi mendukung ROPC grantD6
Downgrade PKCEMenghapus parameter PKCE dari permintaan otorisasi ketika AS tidak mewajibkan PKCE, kembali ke alur authorization code yang kurang amanAS mendukung alur dengan dan tanpa PKCED6
Manipulasi response_typeMengubah response_type dari code ke token atau id_token token untuk memaksakan perilaku seperti implicit dan menerima token secara langsungAS mendukung beberapa tipe respons untuk klien yang samaD6, D3
OAuth Dirty DancingMeminta nilai response_type yang tidak sepenuhnya didukung AS untuk klien tertentu (misalnya code token, code id_token). AS menolak kombinasi yang tidak didukung dan mengembalikan redirect error — tetapi respons error masih menyertakan authorization code atau token yang valid di URL redirect. Penyerang menangkap kredensial yang bocor dari redirect error melalui open redirect atau halaman yang dapat diamati penyerang dalam rantai redirect. Mengeksploitasi deviasi alur non-happy-path di mana implementasi AS mengantarkan materi otorisasi yang dapat digunakan bahkan ketika alur secara keseluruhan dianggap “gagal.” PKCE tidak mencegah ini — penyerang menyiapkan code_challenge dalam tautan berbahayaAS mengembalikan materi otorisasi parsial (kode atau token) dalam redirect error untuk kombinasi response_type yang tidak didukung; rantai redirect dapat diamati penyerang (Frans Rosén)D6, D3

§8-2. Serangan IdP Mix-Up

Ketika klien berinteraksi dengan beberapa server otorisasi, penyerang dapat membingungkan klien tentang AS mana yang mengeluarkan respons tertentu.

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Mix-up klasikPenyerang mengoperasikan AS berbahaya (AIdP). Klien memulai alur dengan AIdP, tetapi penyerang mengarahkan pengguna ke AS yang jujur (HIdP). Pengguna mengautentikasi di HIdP; klien mengirimkan kode yang dihasilkan ke token endpoint AIdP, memberikan penyerang kode korbanKlien berinteraksi dengan beberapa AS; tidak ada parameter iss dalam respons otorisasiD6, D2
Mix-up token endpointAS penyerang mendeklarasikan authorization endpoint AS yang jujur sebagai miliknya sendiri, tetapi menyediakan token endpoint-nya sendiri. Klien mengirimkan kredensial (kode + client_secret) ke token endpoint penyerangMetadata AS tidak diverifikasi secara kriptografisD6, D3
Kebingungan penerbitAS penyerang mengembalikan nilai iss AS yang jujur dalam metadatanya, menipu klien untuk memperlakukan token dari penerbit yang berbeda sebagai setaraKlien tidak memverifikasi iss terhadap AS yang awalnya dihubunginyaD6, D2

§8-3. Serangan Device Authorization Grant

Alur device code (RFC 8628) telah muncul sebagai vektor serangan utama pada tahun 2024-2025, khususnya di lingkungan enterprise.

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Device code phishingPenyerang memulai alur otorisasi perangkat, mendapatkan kode pengguna, lalu merekayasa sosial korban (email, pesan Teams, kode QR) untuk memasukkan kode di URL otorisasi yang sah. Korban mengautentikasi dan memberikan akses ke sesi penyerangDevice flow diaktifkan; target rekayasa sosial yang rentanD4
Bypass MFA melalui device flowKarena pengguna mengautentikasi langsung di halaman login AS (yang menangani MFA), perangkat penyerang menerima token dengan hak istimewa MFA-authenticated penuh tanpa pernah memiliki faktor keduaDevice flow secara desain memisahkan autentikasi dari perangkat yang memintaD6
Kampanye device code otomatisPhishing otomatis berskala besar menggunakan alat seperti SquarePhish2 yang menghasilkan kode QR → redirect ke AS → email device code. Tingkat keberhasilan melebihi 50% dilaporkan dalam kampanye 2024-2025Infrastruktur phishing massal; target enterpriseD4
Aplikasi mimikriPenyerang mendaftarkan aplikasi OAuth dengan nama yang meniru alat yang sah (“Data Loader”, “Security Compliance Tool”, “My Ticket Portal”) agar tampak dapat dipercaya dalam prompt consentPendaftaran aplikasi terbuka; tidak ada penegakan kebijakan penamaanD2, D5

§9. Endpoint & Infrastruktur Sisi Server

Server OAuth mengekspos beberapa endpoint (otorisasi, token, pendaftaran, discovery, userinfo, WebFinger) yang menghadirkan permukaan serangan tersendiri di luar alur protokol itu sendiri.

§9-1. Serangan Discovery & Metadata

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Spoofing endpoint metadataPenyerang menyajikan respons /.well-known/openid-configuration palsu (melalui pembajakan DNS, MITM, atau poisoning cache), mengarahkan klien ke endpoint otorisasi/token berbahayaKlien mengambil metadata melalui saluran tidak aman atau tidak melakukan pinning metadataD2, D6
Manipulasi metadataMemodifikasi kolom tertentu dalam dokumen discovery (misalnya token_endpoint, jwks_uri) untuk mengarahkan alur kredensial ke infrastruktur penyerangEndpoint metadata yang dikompromikan atau salah dikonfigurasiD2

§9-2. SSRF Endpoint Pendaftaran

(Lihat §3-1 untuk vektor SSRF dynamic client registration terperinci melalui logo_uri, jwks_uri, sector_identifier_uri, request_uris)

§9-3. Injeksi WebFinger

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Enumerasi penggunaEndpoint /.well-known/webfinger mengembalikan HTTP 200 untuk pengguna yang ada dan 404 untuk yang tidak ada, memungkinkan enumerasi usernameEndpoint WebFinger tanpa autentikasi dengan respons diferensialD1
Injeksi LDAP melalui WebFingerParameter resource dalam permintaan WebFinger disematkan tanpa escape ke dalam kueri LDAP. Penyerang menggunakan wildcard LDAP (*) dan injeksi filter untuk mengekstrak hash kata sandi karakter demi karakterWebFinger yang didukung oleh direktori LDAP tanpa sanitasi input (CVE dalam ForgeRock OpenAM)D1

§9-4. Serangan Token Endpoint

SubtipeMekanismeKondisi UtamaKetidaksesuaian
SSRF token endpointJika AS me-resolve URL yang disediakan klien selama token exchange (misalnya mengambil JWKS untuk autentikasi klien), SSRF ke jaringan internal dimungkinkanAS me-resolve URL dari assertion klien tanpa batasan jaringanD1
Injeksi layar consentMenyuntikkan konten berbahaya (XSS) melalui kolom metadata klien (nama, logo, deskripsi) yang dirender di halaman consent ASAS merender metadata klien tanpa sanitasi (CVE-2021-26715)D1, D3

§10. Arsitektur Lintas-Protokol & Integrasi

Penerapan OAuth modern melibatkan platform integrasi, rantai otorisasi multi-hop, dan penjembatan protokol yang memperkenalkan permukaan serangan arsitektur.

§10-1. Serangan Platform Integrasi

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Cross-app OAuth Account Takeover (COAT)Dalam platform integrasi (Zapier, IFTTT, Microsoft Power Automate), aplikasi berbahaya penyerang mengeksploitasi arsitektur OAuth bersama platform untuk mencuri authorization code yang ditujukan untuk aplikasi lain. Satu klik pada tautan penyerang mengkompromikan layanan terhubung korbanArsitektur OAuth platform tidak mengisolasi alur otorisasi per-aplikasi (CVE-2023-36019, CVSS 9.6)D2, D3
Cross-app OAuth Request Forgery (CORF)Aplikasi penyerang di platform integrasi memulai tindakan tidak sah menggunakan token korban melalui penyimpanan token bersama platformPlatform tidak menegakkan isolasi token tingkat aplikasiD4, D5
Kompromi token rantai pasokIntegrasi SaaS pihak ketiga menyimpan token OAuth yang kemudian dikompromikan. Satu token memberikan akses ke ratusan lingkungan pelanggan (insiden UNC6395/Drift → Salesforce, 2025)Penyimpanan token terpusat dalam middleware integrasiD3, D7

§10-2. Serangan Otorisasi MCP (Model Context Protocol)

Adopsi OAuth oleh protokol MCP (2025) memperkenalkan permukaan serangan baru dalam otorisasi agen AI.

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Injeksi authorization endpoint (CVE-2025-6514)Server MCP berbahaya mengembalikan authorization_endpoint yang dibuat dengan menyematkan perintah shell. Proxy MCP (mcp-remote) mengeksekusinya melalui shell sistem saat membuka browser untuk otorisasiProxy MCP tidak menyanitasi URL metadata OAuth yang disediakan serverD1, D6
Multi-hop confused deputyDalam alur multi-hop MCP (pengguna → host AI → klien MCP → server MCP), konteks identitas dan izin hilang atau membingungkan di setiap batas, memungkinkan eskalasi hak istimewaRantai delegasi kompleks tanpa pengikatan otorisasi end-to-endD5, D6
SSRF melalui Dokumen Metadata Client IDServer MCP mengambil metadata klien dari URL yang disediakan klien. Klien berbahaya menyediakan URL yang mengarah ke sumber daya internalServer me-resolve URL client_id tanpa perlindungan SSRFD1

§10-3. Kebingungan Lintas-Protokol

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Kebingungan OAuth/SAMLSistem yang mendukung OAuth dan SAML untuk SSO mungkin memiliki pengikatan identitas yang tidak konsisten, memungkinkan penyerang untuk mengeksploitasi perbedaan dalam cara identitas ditetapkanSSO dual-protokol dengan jalur resolusi identitas yang berbedaD2, D6
Kebingungan jenis tokenMenggunakan access token di mana ID token diharapkan (atau sebaliknya), mengeksploitasi aplikasi yang tidak memvalidasi jenis token dan audience dengan benarAplikasi tidak memeriksa claim typ atau aud tokenD2
Penyalahgunaan JWT bearer assertionMenggunakan token JWT yang sah dari satu konteks sebagai assertion klien di konteks lain, mengeksploitasi kunci penandatangan bersama atau validasi audience yang tidak memadaiInfrastruktur kunci bersama di seluruh layananD2, D6

§10-4. SSO Gadget: Alur OAuth/OIDC sebagai Primitif Eskalasi Self-XSS

Alur otorisasi OAuth/OIDC menciptakan rantai navigasi lintas-origin (RP → IdP → RP) yang membawa status autentikasi melalui parameter URL. Ketika aplikasi memiliki kerentanan self-XSS (hanya dapat dieksploitasi dalam sesi penyerang sendiri), alur OAuth itu sendiri menjadi “gadget” yang menjembatani konteks terautentikasi penyerang ke browser korban — meningkatkan self-XSS berdampak rendah menjadi pengambilalihan akun penuh tanpa memerlukan login CSRF.

SubtipeMekanismeKondisi UtamaKetidaksesuaian
Gadget redirect authorization endpointPenyerang memulai permintaan otorisasi OAuth dengan redirect_uri yang dibuat yang mengarah ke halaman yang mengandung payload self-XSS. Ketika korban mengklik tautan penyerang, IdP mengautentikasi korban dan mengarahkan ke halaman RP tempat payload XSS tersimpan penyerang dieksekusi dalam sesi terautentikasi korbanSelf-XSS pada RP; alur OAuth mempertahankan navigasi ke halaman yang rentan; tidak ada perlindungan CSRF tambahan pada endpoint callbackD3, D4
Halaman login IdP sebagai jembatan konteksPenyerang membuat URL otorisasi OAuth yang memaksa korban melalui alur login IdP. Setelah korban mengautentikasi di IdP, respons otorisasi mengarahkan ke endpoint callback RP. Jika halaman callback (atau halaman yang dapat dijangkau darinya) mengandung self-XSS yang dipicu oleh state yang dikontrol penyerang (misalnya data profil yang tersimpan, parameter query yang diteruskan melalui alur), XSS dieksekusi dalam konteks pasca-autentikasi korbanSelf-XSS dapat dijangkau dari callback OAuth; IdP mengizinkan prompt=login atau sesi kedaluwarsa; data yang dikontrol penyerang bertahan di seluruh round-trip OAuthD2, D4
Respons token endpoint sebagai pemicu XSSDalam implicit atau hybrid flow, respons otorisasi (yang mengandung token atau kode dalam fragment/parameter URL) diproses oleh JavaScript sisi klien pada RP. Jika logika pemrosesan ini memiliki cacat injeksi, penyerang membuat URL respons otorisasi dengan nilai berbahaya dalam parameter state, code, atau error yang memicu XSS saat handler callback RP memprosesnyaPemrosesan callback OAuth sisi klien dengan sanitasi yang tidak memadai dari parameter respons; implicit atau hybrid flowD1, D3

Wawasan kuncinya adalah bahwa alur OAuth/OIDC secara inheren adalah rantai navigasi lintas-origin yang membawa state yang dapat dipengaruhi penyerang (melalui state, redirect_uri, login_hint, prompt, dan parameter lainnya). Tidak seperti login CSRF (§7-1 dalam csrf.md) yang memerlukan pemaksaan autentikasi sebagai penyerang, rantai SSO gadget mengeksploitasi autentikasi korban sendiri — penyerang hanya mengontrol jalur navigasi dan konteks tempat halaman pasca-autentikasi dirender.


§11. Pemetaan Skenario Serangan (Sumbu 3)

SkenarioArsitekturKategori Mutasi Utama
Pengambilalihan AkunAplikasi mana pun yang dilindungi OAuth§1 + §2-1 + §4-1 + §6-1
Pencurian Token / Pemanenan KredensialAplikasi dengan vektor kebocoran token§1-2 + §2-2 + §7-1 + §8-3
Akses Tidak Sah yang PersistenLingkungan cloud enterprise§5-2 + §7-2 + §8-3
Eskalasi Hak IstimewaOAuth enterprise multi-scope (Azure AD, Google Workspace)§2-3 + §5-1 + §5-2
SSRF / Eksploitasi Sisi ServerServer OAuth dengan dynamic registration§3-1 + §9-2 + §9-3
Phishing / Rekayasa SosialOAuth enterprise, device flow§5-1 + §8-3
Kompromi Rantai PasokPlatform integrasi, SaaS pihak ketiga§7-2 + §10-1
Pergerakan Lateral (Cloud)Microsoft 365, Azure AD, Google Workspace§7-2 + §10-1 + §10-2

§12. Pemetaan CVE / Bounty (2023–2025)

Kombinasi MutasiCVE / KasusDampak / Bounty
§3-1 (SSRF melalui logo_uri) + §9-4CVE-2021-26715 (MITREid Connect)SSRF + XSS melalui endpoint pendaftaran klien. Server mengambil dan mengembalikan konten logo_uri tanpa validasi
§6-2 (Session poisoning mass assignment)CVE-2021-27582 (MITREid Connect)Mass assignment Spring @ModelAttribute memungkinkan penimpaan redirectUri di endpoint consent
§10-1 (Pengambilalihan lintas-aplikasi COAT)CVE-2023-36019 (Microsoft)CVSS 9.6. Satu klik mengkompromikan suite Microsoft 365 melalui platform integrasi
§3-2 (Penyalahgunaan aplikasi first-party)ConsentFix/AuthCodeFix (2025)Aplikasi Azure CLI dan Azure PowerShell yang di-pre-consent dapat dieksploitasi untuk eskalasi hak istimewa seluruh tenant
§4-1 (Kebingungan claim yang dapat diubah)Google OAuth domain reuse (2024)Domain startup yang gagal mengekspos jutaan akun. Bounty Google VRP $1.337
§10-2 (Injeksi authorization endpoint MCP)CVE-2025-6514 (mcp-remote)RCE melalui server MCP berbahaya. 558.846 unduhan terpengaruh
§9-3 (Injeksi LDAP melalui WebFinger)CVE dalam ForgeRock OpenAMEkstraksi hash kata sandi melalui injeksi wildcard LDAP karakter demi karakter
§8-3 (Device code phishing)Kampanye Storm-2372 / ShinyHunters (2024-2025)Kompromi enterprise Google, Qantas, dan lusinan organisasi besar. Bypass MFA
§7-2 (Kompromi token rantai pasok)UNC6395/Drift-Salesforce (2025)Satu token OAuth yang dicuri memberikan akses ke 700+ instance Salesforce pelanggan
§2-1 (Downgrade PKCE)OAuth 2.1 / RFC 9700 (2025)PKCE kini wajib untuk semua klien; alur non-PKCE secara resmi dihapus
§4-2 (Audience injection)Diungkapkan ke IETF OAuth WG (Jan 2025)Kelas serangan baru yang mempengaruhi OAuth 2.0, OIDC, FAPI, CIBA, dan beberapa ekstensi. Upaya perbaikan multi-standar yang terkoordinasi
§10-1 (Serangan lintas-aplikasi)USENIX Security ‘2511 dari 18 platform integrasi besar rentan terhadap COAT; 5 terhadap CORF. Microsoft, Google, Amazon terpengaruh
§1-1 (Bypass validasi redirect URI)Beberapa laporan HackerOneBerbagai bounty $X.XXX+ untuk bypass redirect_uri di platform besar
§9-1 (Bypass autentikasi proxy)CVE-2025-54576 (OAuth2-Proxy)Bypass autentikasi dalam OAuth2-Proxy; diperbaiki dalam v7.11.0
§10-3 (Bypass SAML/OAuth)CVE-2024-4985 (GitHub Enterprise Server)Bypass autentikasi melalui SAML/OAuth di GitHub Enterprise Server
§4-1 (Over-provisioning aplikasi multi-tenant)BingBang (Wiz Research, 2023)Akses tidak sah ke aplikasi Microsoft internal termasuk manipulasi hasil pencarian Bing.com dan XSS Office 365 melalui aplikasi Azure AD multi-tenant yang over-provisioned
§1-1 (Injeksi whitespace)Kebocoran Token OAuth draw.io (2023)Kebocoran token OAuth melalui bypass whitespace dalam validasi redirect_uri
§1-1 (Kebingungan path)ACM CCS “OAuth Path Confusion” (2023)Bypass validasi redirect_uri melalui diferensial parser URL pada interpretasi komponen path
§2-2 (Kebocoran token melalui kunci publik)Azure B2C Crypto Misuse (Praetorian, 2023)Kunci publik RSA yang diekstrak dari endpoint JWKS digunakan untuk memalsukan refresh token terenkripsi → kompromi akun penuh pada tenant Azure AD B2C. Lihat cryptographic-implementation-vulnerabilities.md §2-2

§13. Alat Deteksi

AlatCakupan TargetTeknik Utama
Burp Suite (PortSwigger)Pengujian alur OAuth/OIDC penuhProxy HTTP dengan aturan pemindaian khusus OAuth; manipulasi alur manual
ActiveScan++ (Ekstensi Burp)Discovery OpenID/OAuthMendeteksi .well-known/openid-configuration dan endpoint pendaftaran secara otomatis
COVScan (USENIX ‘25)Kerentanan OAuth lintas-aplikasi dalam platform integrasiAnalisis lalu lintas jaringan semi-otomatis untuk deteksi COAT/CORF
SquarePhish2 (Ofensif)Simulasi phishing device codePhishing alur device code otomatis dengan pembuatan kode QR
OWASP ZAPPengujian alur OAuth umumPemindaian aktif/pasif endpoint OAuth
oauth-scanner (GitHub)Deteksi miskonfigurasi OAuthMemeriksa bypass redirect_uri umum, state yang hilang, masalah scope
Nuclei (ProjectDiscovery)Pemindaian berbasis template OAuthTemplate komunitas untuk deteksi miskonfigurasi OAuth/OIDC
Obsidian Security (Komersial)Pemantauan token OAuth SaaSMendeteksi pemberian OAuth yang mencurigakan, penyalahgunaan token, dan anomali scope di lingkungan cloud
Push Security (Komersial)Analisis risiko scope OAuthMengidentifikasi integrasi OAuth pihak ketiga yang berbahaya dan kombinasi scope berisiko
Microsoft Entra ID Protection (Defensif)Pemantauan OAuth Azure ADMendeteksi consent aplikasi OAuth yang anomali, masuk berisiko, dan pola phishing device code

§14. Ringkasan: Prinsip-Prinsip Inti

Properti Fundamental

Seluruh ruang mutasi OAuth muncul dari satu realitas arsitektur: OAuth adalah protokol delegasi yang memisahkan pihak yang mengautentikasi (pengguna) dari pihak yang mengonsumsi otorisasi (klien), dimediasi oleh kredensial bearer yang melintasi browser. Arsitektur tiga pihak ini — dengan browser sebagai lapisan transport yang tidak tepercaya — menciptakan batas kepercayaan yang inheren yang dieksploitasi oleh setiap serangan dalam taksonomi ini dalam beberapa bentuk.

Authorization code, access token, dan refresh token semuanya adalah kredensial bearer: siapa pun yang memilikinya dapat menggunakannya. Tidak seperti kata sandi (yang membuktikan pengetahuan) atau sertifikat (yang membuktikan kepemilikan kunci privat), token OAuth tidak memiliki pengikatan intrinsik ke pemegang yang dimaksudkan. PKCE, DPoP, dan sender-constrained token adalah mitigasi untuk properti desain fundamental ini, bukan solusi untuk itu.

Mengapa Perbaikan Inkremental Gagal

Setiap generasi peningkatan keamanan OAuth mengatasi vektor serangan tertentu sementara permukaan serangan mendasar bergeser. PKCE mencegah intersepsi kode tetapi tidak menghentikan injeksi kode melalui open redirect. Penghentian implicit flow mengatasi paparan token dalam fragment tetapi tidak menghilangkan kebocoran token melalui XSS atau postMessage. Validasi redirect URI yang ketat mencegah redirect sepele tetapi membuka pintu bagi serangan chaining yang semakin kreatif melalui open redirector, kebocoran Referer, dan halaman proxy.

Gelombang serangan device code phishing 2024-2025 mengilustrasikan ini dengan sempurna: serangan mengeksploitasi tidak ada kerentanan perangkat lunak — ia memanfaatkan perilaku yang dirancang protokol di mana autentikasi pengguna secara sengaja dipisahkan dari perangkat yang meminta. Demikian pula, serangan audience injection 2025 menunjukkan bahwa bahkan autentikasi klien berbasis tanda tangan (metode autentikasi klien terkuat) membawa ambiguitas fundamental ketika klien berinteraksi dengan beberapa server otorisasi.

Solusi Struktural

Solusi yang benar-benar struktural akan memerlukan tiga properti yang sebagian besar kurang dimiliki penerapan OAuth saat ini: (1) sender-constrained token (DPoP, token terikat mTLS) yang secara kriptografis mengikat token ke pemegang yang dimaksudkan, (2) PKCE universal + verifikasi penerbit (kini diwajibkan dalam OAuth 2.1 / RFC 9700) yang mencegah intersepsi kode dan serangan mix-up, serta (3) evaluasi otorisasi berkelanjutan yang bergerak melampaui consent satu kali ke penegakan kebijakan real-time atas penggunaan token, konsumsi scope, dan anomali perilaku. Sampai ketiganya ada di mana-mana, taksonomi di atas akan terus tumbuh.


Dokumen ini dibuat untuk tujuan penelitian keamanan defensif dan pemahaman kerentanan.


Referensi