Pengantar

Aplikasi web modern sering kali terdiri dari berbagai layanan yang berjalan pada domain atau subdomain berbeda. Sebagai contoh, antarmuka pengguna (frontend) dapat berjalan di app.example.com, sementara API berada di api.example.com. Agar komunikasi antar domain tersebut tetap aman, browser menerapkan kebijakan Same-Origin Policy (SOP) yang membatasi akses lintas asal (cross-origin).

Untuk mengakomodasi kebutuhan komunikasi antar domain yang sah, digunakan mekanisme Cross-Origin Resource Sharing (CORS). Namun, jika CORS dikonfigurasi secara keliru, aplikasi justru dapat memberikan akses kepada domain yang tidak seharusnya dipercaya. Kondisi ini dikenal sebagai CORS Misconfiguration, salah satu kerentanan yang sering ditemukan dalam pengujian keamanan aplikasi web.

Artikel ini membahas pengertian CORS Misconfiguration, cara kerjanya, dampak terhadap keamanan, contoh kesalahan konfigurasi, serta langkah-langkah untuk mencegahnya.


Apa Itu CORS Misconfiguration?

Cross-Origin Resource Sharing (CORS) Misconfiguration adalah kesalahan konfigurasi pada kebijakan CORS yang memungkinkan situs atau domain yang tidak berwenang mengakses sumber daya dari aplikasi web.

Secara normal, browser hanya mengizinkan permintaan (request) dari origin yang telah ditentukan oleh server. Namun, apabila server memberikan izin terlalu luas, penyerang dapat memanfaatkan browser korban untuk mengakses data sensitif menggunakan kredensial milik pengguna yang sedang login.

Menurut OWASP Web Security Testing Guide, kesalahan konfigurasi CORS dapat menyebabkan aplikasi mengekspos data sensitif kepada domain yang tidak tepercaya (dikutip dari https://owasp.org/www-project-web-security-testing-guide/).

baca juga : Mengenal Dunia Clipper Video: Dari Video Panjang ke Konten Viral


Bagaimana Cara Kerja CORS?

CORS bekerja menggunakan serangkaian HTTP Header yang memberi tahu browser apakah suatu permintaan lintas domain diizinkan.

Beberapa header yang paling umum digunakan antara lain:

  • Access-Control-Allow-Origin
  • Access-Control-Allow-Methods
  • Access-Control-Allow-Headers
  • Access-Control-Allow-Credentials

Browser akan memeriksa header tersebut sebelum memberikan akses terhadap respons yang diterima dari server.


Mengapa CORS Diperlukan?

Tanpa CORS, browser akan memblokir seluruh permintaan lintas domain.

Padahal, banyak aplikasi modern membutuhkan komunikasi antar layanan, misalnya:

  • Frontend dengan REST API.
  • Dashboard dengan layanan autentikasi.
  • Aplikasi web dengan Content Delivery Network (CDN).
  • Integrasi layanan pihak ketiga.

Karena itu, CORS menjadi mekanisme penting untuk tetap menjaga keamanan sekaligus memungkinkan komunikasi lintas domain yang sah.


Contoh Kesalahan Konfigurasi CORS

Beberapa konfigurasi berikut sering menjadi penyebab munculnya kerentanan.

Mengizinkan Semua Origin

Contoh berikut dianggap berisiko:

Access-Control-Allow-Origin: *

Konfigurasi tersebut mengizinkan seluruh domain mengakses sumber daya tertentu.

Apabila API juga mengizinkan kredensial pengguna, risiko kebocoran data menjadi jauh lebih besar.


Mengaktifkan Credentials Secara Tidak Tepat

Penggunaan:

Access-Control-Allow-Credentials: true

harus disertai daftar origin yang benar-benar tepercaya.

Menggabungkan opsi ini dengan origin yang terlalu luas dapat memberikan akses terhadap data pengguna yang sedang login.

baca juga : GRC dalam Perspektif Offensive Security: Integrasi Bug Bounty, OSINT, VAPT, dan Red Team


Memantulkan Nilai Origin Secara Otomatis

Beberapa aplikasi mengembalikan nilai header Origin tanpa melakukan validasi.

Akibatnya, domain apa pun yang dikirimkan oleh penyerang dapat memperoleh izin akses.


Dampak CORS Misconfiguration

Kesalahan konfigurasi CORS dapat menyebabkan berbagai risiko keamanan.

Kebocoran Data Sensitif

Penyerang dapat membaca respons API yang berisi:

  • Data profil pengguna.
  • Riwayat transaksi.
  • Informasi akun.
  • Token autentikasi tertentu.

Penyalahgunaan Session Pengguna

Jika korban sedang login, browser dapat mengirimkan cookie sesi secara otomatis sehingga permintaan dari situs berbahaya tetap dianggap sah.


Mempermudah Serangan Lain

CORS Misconfiguration sering dikombinasikan dengan teknik lain seperti:

  • Cross-Site Scripting (XSS).
  • Cross-Site Request Forgery (CSRF).
  • Social Engineering.

CORS Misconfiguration vs Cross-Site Scripting (XSS)

Walaupun sama-sama berkaitan dengan aplikasi web, keduanya memiliki karakteristik berbeda.

CORS Misconfiguration Cross-Site Scripting (XSS)
Terjadi akibat konfigurasi server Terjadi akibat validasi input yang lemah
Memanfaatkan kebijakan CORS Menyisipkan skrip berbahaya
Fokus pada akses lintas origin Fokus pada eksekusi JavaScript
Dapat mengekspos data API Dapat mengambil alih sesi pengguna

Cara Mencegah CORS Misconfiguration

Batasi Origin yang Diizinkan

Hanya tambahkan domain yang benar-benar dipercaya pada header:

Access-Control-Allow-Origin

Hindari penggunaan karakter wildcard (*) untuk endpoint yang menangani data sensitif.


Validasi Header Origin

Pastikan server memeriksa apakah nilai Origin benar-benar berasal dari daftar domain yang telah diizinkan.


Gunakan Credentials Secara Selektif

Aktifkan:

Access-Control-Allow-Credentials

hanya jika benar-benar diperlukan.


Pisahkan Endpoint Publik dan Privat

Endpoint yang berisi informasi sensitif sebaiknya memiliki kebijakan CORS yang lebih ketat dibandingkan endpoint publik.


Lakukan Pengujian Keamanan Berkala

Gunakan security testing maupun penetration testing untuk memastikan konfigurasi CORS tetap aman setelah setiap pembaruan aplikasi.


Mengapa CORS Masih Sering Salah Dikonfigurasi?

Banyak pengembang menambahkan konfigurasi CORS hanya agar aplikasi dapat berjalan tanpa memahami implikasi keamanannya. Akibatnya, izin akses sering dibuat terlalu longgar demi mengatasi masalah integrasi, padahal kebijakan tersebut dapat dimanfaatkan oleh penyerang untuk memperoleh akses ke data pengguna.

Menurut dokumentasi Mozilla Developer Network (MDN), konfigurasi CORS harus dilakukan secara hati-hati karena browser akan mengandalkan kebijakan tersebut dalam menentukan apakah suatu origin berhak mengakses sumber daya tertentu (dikutip dari https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS).

baca juga : YARA Rules: Senjata Utama untuk Mendeteksi Malware Secara Presisi


Kesimpulan

Cross-Origin Resource Sharing (CORS) merupakan mekanisme penting yang memungkinkan komunikasi lintas domain pada aplikasi web modern. Namun, kesalahan konfigurasi CORS dapat membuka peluang bagi pihak yang tidak berwenang untuk mengakses data sensitif melalui browser pengguna.

Dengan membatasi origin yang dipercaya, memvalidasi header Origin, serta menerapkan konfigurasi yang sesuai kebutuhan, organisasi dapat mengurangi risiko kebocoran data akibat CORS Misconfiguration. Oleh karena itu, pengujian konfigurasi CORS sebaiknya menjadi bagian dari proses keamanan aplikasi sebelum sistem dipublikasikan.