Salah satu manfaat menjadi spesialis keamanan adalah bekerja dengan banyak tim. Setelah audit, spesialis keamanan akan memiliki kesempatan untuk bekerja dengan administrator dan analis basis data. Agar aplikasi berfungsi dengan baik dan aman, tim ini mencoba menangani kerentanan keamanan yang memiliki dasar yang sama. Dialog antara tim ini mengangkat beberapa masalah dengan IP asli.
Konsep Proxy dan Real IP
Aplikasi web saat ini berjalan di beberapa server aplikasi dan sistem basis data. Bayangkan dua server aplikasi berbagi kode sumber yang sama. Permintaan dari pengguna siap untuk dipenuhi oleh salah satu dari server ini tergantung pada situasi beban. Mekanisme load balancing, yang menangani permintaan HTTP di depan server aplikasi, memutuskan permintaan mana yang akan diteruskan ke server aplikasi mana. Ini menimbulkan pertanyaan besar bagi administrator sistem middleware dan pengembang perangkat lunak: apakah alamat IP asli pengguna?
Proxy bertugas mentransmisikan data antara dua sistem. Penyeimbang beban adalah mekanisme yang bertanggung jawab atas proxy. Dengan kata lain, hanya satu sistem yang berkomunikasi dengan pengguna dan server aplikasi. Dalam hal lalu lintas jaringan, server web A atau web B selalu berkomunikasi dengan alamat IP penyeimbang beban. Hal yang sama dapat dikatakan untuk pengguna. Untuk profesional keamanan, penyeimbang muatan menyebabkan masalah serius dalam serangan injeksi SQL berbasis waktu. Tetapi fokus utama di sini adalah spoofing IP.
Hubungan X-Forwarded-For dan IP
Pertimbangkan hubungan antara X-Forwarded-For, developer, dan middleware. Misalnya, tugas pengembang aplikasi adalah merekam semua aktivitas, seperti upaya kata sandi yang salah oleh pengguna, dengan alamat IP mereka. Pada awalnya, pengembang akan menentukan alamat IP pengguna saat permintaan HTTP dipenuhi kesempatan yang diberikan oleh bahasa pemrograman yang dia gunakan dan akan mencoba untuk terus menggunakan data ini di aplikasi.
Karena alamat IP-nya akan diperbaiki selama proses pengembangan, ia akan selalu melihat alamat yang sama selama pengujian karena umumnya, komputer pengguna masuk jaringan perusahaan bekerja dengan IP statis melalui alamat MAC. Unit akan melakukan beberapa tes penerimaan; Namun, akan ada masalah dengan ini. Unit pengujian akan meneruskan masalah ini ke pengembang perangkat lunak.
Pada tahap ini, pengembang dapat menulis pengontrol di lingkungan pengembangan dan melihat permintaan HTTP dikirimkan ke aplikasi dalam bentuk mentah, karena setiap orang memiliki alamat IP yang sama. Ini akan menghasilkan bekerja dengan X-Forwarded-For.
Informasi tajuk disebut X-Forwarded-For akan dikirim ke server aplikasi. Pada tahap ini, pengembang perangkat lunak akan melihat alamat IP mereka, yang mereka kendalikan dengan ipconfig, bukan penyeimbang muatan yang mereka lihat di log. Banyak pemrogram berpikir bahwa mereka dapat menyelesaikan masalah ini dengan blok kode seperti ini:
fungsigetIPaddress() {
$ipKeys = Himpunan(
'HTTP_CLIENT_IP',
'HTTP_X_FORWARDED_FOR',
'HTTP_X_DITERUSKAN',
'HTTP_X_CLUSTER_CLIENT_IP',
'HTTP_FORWARDED_FOR', 'HTTP_DITERUSKAN',
'REMOTE_ADDR'
);
untuk setiap ($ipKey sebagai $kunci) {
jika (array_key_exists($key, $_SERVER) BENAR) {
untuk setiap (meledak(',', $_SERVER[$kunci]) sebagai $ip) {
$ip = pangkas($ip);
jika (validasi_ip($ip)) {
kembali $ip;
}
}
}
}
kembaliisset($_SERVER['REMOTE_ADDR'])? $_SERVER['REMOTE_ADDR']: PALSU;
}
Ini tidak akan cukup—pengembang perlu memeriksa apakah nilai yang masuk adalah alamat IP yang valid.
Segala sesuatu di atas milik bagian yang ditangani oleh pengembang. Namun agar aplikasi berfungsi dengan baik dan aman, tim—bekerja sama dalam teori, tetapi dalam pada kenyataannya, pada titik ekstrim satu sama lain—cobalah menghadapi kerentanan keamanan yang memiliki a dasar umum. Sekarang coba lihat masalah dari sudut pandang orang yang bertanggung jawab atas konfigurasi penyeimbang beban.
Administrator sistem mungkin berpikir bahwa pengembang merekam informasi seperti X-Forwarded-For karena data dalam permintaan HTTP tidak dapat dipercaya. Administrator tersebut sering mengirimkan X-Forwarded-For; namun, mereka juga mengirimkan alamat sumber TCP dari sistem yang mengirimkan permintaan sebagai nilai header kedua. Struktur True-Client-IP adalah contoh yang bagus untuk ini.
Saat Anda menggabungkan semua hal ini, dua unit berbeda mengikuti jalur berbeda untuk masalah yang sama, yang dikenal sebagai spoofing IP klien. Hasilnya adalah masalah kritis di mana tidak ada pencatatan IP dan otorisasi berbasis IP yang akan berfungsi.
Bagaimana Spoofing IP Klien Terdeteksi dalam Tes Penetrasi?
Sebagian besar penguji penetrasi menggunakan Firefox untuk pemeriksaan keamanan mereka. Mereka mengonfigurasi Firefox dengan add-on sederhana, X-Forwarded-For: 127.0.0.1 untuk semua permintaan HTTP. Jadi, kemungkinan mendeteksi kerentanan semacam itu di semua tes penetrasi meningkat. Melakukan pemeriksaan sesuai dengan Daftar Periksa OWASP memastikan Anda memeriksa kerentanan tersebut. Namun, untuk mendeteksi kerentanan X-Forwarded-For, Anda memerlukan modul dalam aplikasi yang menunjukkan alamat IP Anda atau tindakan yang diambil.
Cara Mengatasi Kerentanan X-Forwarded-For
Organisasi memerlukan dokumen pengembangan aplikasi wajib yang aman untuk semua tim perangkat lunak dan perusahaan outsourcing. Misalnya, jika Anda memerlukan alamat IP pengguna, perusahaan harus merencanakan ke depan dan membuat aturan tentang informasi header yang akan digunakan di sini. Jika tidak, tim yang berbeda akan menghasilkan solusi yang berbeda. Jika situasi seperti itu tidak dapat diatasi, aplikasi outsourcing akan ikut bermain, sehingga sulit untuk mengukur kode sumber. Secara umum, perusahaan tidak mau mengikuti jalan seperti itu.
Tetapi untuk mengatasi masalah ini, Anda dapat menggunakan aturan F5 berikut:
kapan HTTP_REQUEST {
HTTP:: tajuk hapus X-Forwarded-Untuk
HTTP:: sisipkan tajuk X-Forwarded-Untuk [IP:: remote_addr]
}
Ini menghapus bidang X-Forwarded-For dalam permintaan HTTP dari dunia luar. Kemudian mengirimkan permintaan dengan menambahkan alamat IP dari sistem yang mengirim permintaan ke sana. Dengan begitu, daftar yang andal dibuat untuk perangkat lunak yang bekerja sesuai dengan X-Forwarded-For.
Singkatnya, tujuan terbesar di sini adalah melakukan beberapa pemeriksaan pada permintaan HTTP dan menciptakan lingkungan yang andal. Blok kode di atas adalah contoh bagus yang bisa Anda gunakan untuk ini.
Kerangka dan Dokumentasi Cybersecurity untuk Perusahaan
Unit-unit yang tampaknya tidak bergantung satu sama lain sebenarnya adalah bagian dari keseluruhan. Itu sebabnya semuanya harus bekerja secara sistematis. Aturan yang ditentukan sebelumnya harus diterapkan di antara masing-masing unit. Jika sistem kerja seperti itu tidak diadopsi, banyak masalah seperti kerentanan X-Forwarded-For dapat terjadi. Untuk ini, semuanya harus dipertimbangkan sebelumnya dan dokumentasi selengkap mungkin harus digunakan.
Dan setiap unit dalam sistem besar ini perlu mengadopsi dan menerapkan kerangka kerja keamanan siber. Titik awal Anda harus meneliti dan mempelajari logika kerja kerangka kerja ini.