Lembar Cheat Keamanan: Penambalan Virtual

Topik artikel kami hari ini adalah Virtual Patching.

Virtual Patching adalah lapisan kebijakan keamanan yang dirancang untuk mendeteksi dan mencegah eksploitasi eksploitasi untuk kerentanan yang diketahui.

Patch virtual mulai berfungsi setelah analisis lalu lintas dan mencegah lalu lintas berbahaya memasuki aplikasi yang rentan. Dengan demikian, tambalan virtual, jika berlaku, mencegah eksploitasi kerentanan tanpa memodifikasi kode sumber aplikasi. Biasanya, tambalan virtual diimplementasikan pada firewall untuk aplikasi web (WAF).

Jadi mengapa tambalan virtual, mengapa tidak memperbarui kode saja?

Tentu saja, memperbarui kode adalah solusi pertama dan yang disarankan, tetapi itu tidak selalu memungkinkan, baik karena kurangnya sumber daya dalam organisasi (semua pengembang sudah sibuk dan tidak dapat ditransfer ke perbaikan darurat), penggunaan perangkat lunak orang lain (bagaimana cara mengubah kode di sini) atau hanya perlu menulis ulang sedikit jika tidak semua aplikasi untuk tambalan ini.
Ini tidak berarti bahwa penambalan virtual dan pembaruan kode adalah hal yang saling eksklusif! Mereka biasanya dieksekusi oleh perintah yang berbeda (mengingat spesifik dari proses ini), sehingga menambal dan memperbarui dapat berjalan secara paralel.

Manfaat dari tambalan virtual adalah sebagai berikut:

  • Solusi cepat (relatif) untuk menutup kerentanan sampai tidak ada kemungkinan untuk patch penuh.
  • Jika aplikasi web adalah produk Anda, itu tidak melanggar kemungkinan proses bisnis yang ada, yaitu, jika tambalan berikutnya untuk produk tersebut direncanakan, misalnya dalam sebulan, maka Anda tidak perlu melanggar seluruh jadwal.
  • Kemampuan untuk menutup kerentanan dengan anggota tim lain jika pengembang tidak dapat melakukan ini saat ini.
  • Ketepatan waktu - jika Anda menggunakan perangkat lunak siap pakai, tidak diketahui kapan tambalan untuk produk Anda akan dirilis, dan tentu saja Anda tidak ingin membiarkannya rentan.

Kerugian dari tambalan virtual:

  • Ini masih bukan obat mujarab. Saat menggunakannya, tidak semua vektor serangan dapat ditutupi, karena itu bahaya operasi akan tetap ada.
  • Kerugian dari semua solusi sementara adalah kemungkinan sementara itu menjadi permanen. Perusahaan akan memutuskan bahwa begitu berhasil, maka kita tidak akan menyentuhnya lagi dan akan membiarkan semuanya seperti apa adanya.
  • Ini adalah solusi tambahan, kerentanan itu sendiri tidak hilang, tetapi hanya bersembunyi di balik lapisan perlindungan tambahan.

Persiapan untuk tambalan virtual dapat dibagi menjadi langkah-langkah berikut:

  1. Persiapan
  2. Identifikasi ancaman
  3. Analisis
  4. Buat tambalan virtual
  5. Implementasi dan Pengujian
  6. Pemulihan / kelanjutan kerja

Kerentanan publik

Misalnya, ambil injeksi SQL dan ModSecurity WAF (sejak open source).

WordPress Shopping Cart Plugin  WordPress /wp-content/plugins/levelfourstorefront/scripts/administration/exportsubscribers.php  reqID   SQL Injection. 

Plugin Keranjang Belanja WordPress untuk WordPress berisi cacat yang memungkinkan penyerang menjalankan injeksi SQL. Masalahnya terletak pada skrip /wp-content/plugins/levelfourstorefront/scripts/administration/exportsubscribers.php, di mana parameter reqID tidak dibersihkan dengan benar.

Ini dapat memungkinkan penyerang untuk menanamkan atau memanipulasi query SQL di backend, yang mengarah pada kemungkinan mendapatkan akses ilegal ke data, dengan semua konsekuensi yang terjadi.

Tahap persiapan

Seperti dalam banyak proses, persiapan untuk tambalan virtual adalah komponen penting. Sebelum berurusan dengan kerentanan yang ditemukan (atau bahkan lebih buruk dengan serangan waktu nyata), Anda perlu melakukan beberapa hal. Titik persiapan bukanlah untuk memahami dengan panik selama serangan bagaimana patch virtual bekerja dan bagaimana mengintegrasikan WAF ke dalam infrastruktur saat ini jika tidak ada di sana, tetapi untuk mengambil tindakan tertentu dan dipikirkan dengan matang.

Berikut adalah beberapa poin penting yang perlu dibahas dalam persiapan:

  • Memantau kerentanan dari vendor atau dari sumber publik - jika Anda menggunakan perangkat lunak pihak ketiga, maka pastikan Anda berlangganan semua surat darurat dari vendor. Ini akan membantu Anda tetap diperbarui tentang kerentanan baru untuk perangkat lunak Anda dan tambalan terkait.
  • Persiapkan semua pekerjaan yang diperlukan di muka untuk memungkinkan tambalan virtual ke dalam produksi - tambalan virtual harus dibangun dengan cepat, sehingga proses verifikasi yang biasa untuk tambalan tidak akan berfungsi di sini. Karena tambalan virtual tidak mengubah kode sumber, tambalan tidak memerlukan jumlah pengujian yang sama dengan tambalan perangkat lunak biasa. Perlu menghubungkan patch virtual dengan kategori yang sama dengan pembaruan untuk antivirus atau pembaruan tanda tangan untuk IDS. Ini secara signifikan akan mempercepat proses peluncuran mereka ke dalam produksi.
  • Masukkan utilitas untuk tambalan virtual terlebih dahulu - karena kriteria utama untuk tambalan virtual adalah kecepatan, kemudian instal perangkat lunak baru jika Anda memerlukan tambalan darurat, dengan kata lain, adalah ide yang buruk.
  • Tingkatkan pencatatan untuk sistem Anda - standar log yang digunakan oleh sebagian besar server secara default (CLF) tidak memberikan cukup data untuk merespons insiden dengan benar. Anda harus memiliki akses ke data berikut:

    ◦ Minta URI (termasuk QUERY_STRING)
    ◦ Semua header permintaan (termasuk cookie)
    ◦ Badan permintaan penuh (termasuk memuat POST)
    ◦ Header respons penuh
    ◦ Badan respons penuh

Tahap Deteksi Ancaman

Tahap ini dimulai ketika organisasi mengetahui bahwa ada kerentanan dalam aplikasi web-nya. Secara umum, ada dua pendekatan berbeda untuk mengidentifikasi kerentanan - proaktif dan reaktif.

Pendekatan proaktif

Kasus ketika organisasi melakukan pekerjaan keamanan dan melakukan tugas-tugas berikut:

  • Penilaian dinamis aplikasi - pentest dan / atau tes penilaian otomatis dilakukan pada aplikasi web yang sedang berjalan untuk mengidentifikasi kekurangan.
  • Tinjauan kode sumber - evaluasi manual dan / atau otomatis dari kode sumber aplikasi web dilakukan untuk mendeteksi kekurangan.

Pendekatan reaktif

Ada tiga metode reaktif utama untuk mengidentifikasi kerentanan:

  • Pesan dari vendor - ketika vendor perangkat lunak Anda mempublikasikan informasi tentang kerentanan yang ditemukan.
  • Publikasi publik adalah publikasi kerentanan yang ditemukan untuk perangkat lunak yang Anda gunakan di sumber publik. Dalam hal ini, respons Anda terhadap kerentanan harus lebih cepat daripada saat melaporkan dari vendor, karena lebih banyak orang tahu tentang kerentanan tersebut.
  • Insiden keamanan - ini berarti bahwa serangan itu sudah berlangsung. Diperlukan tindakan segera untuk mengkonkretkan dan menutup kerentanan.

Tahap analisis

Langkah-langkah yang disarankan untuk fase analisis:

  • Tentukan bagaimana tambalan virtual cocok untuk kasus Anda - ini bagus untuk menutup kekurangan yang terkait dengan input (mis. Injeksi), tetapi mungkin tidak memberikan tingkat perlindungan yang memadai untuk serangan jenis atau kategori lain. Analisis terperinci dan menyeluruh dari masalah yang mendasarinya harus dilakukan untuk menentukan apakah perangkat lunak tambalan virtual akan memberikan tingkat deteksi dan cakupan yang memadai.
  • Libatkan sistem Anda untuk melacak bug / tugas - masukkan informasi kerentanan ke pelacak Anda untuk pelacakan dan penyelidikan lebih lanjut.
  • Verifikasi kerentanan - temukan nama resmi kerentanan, jika ada. Jika terdeteksi oleh metode proaktif, maka Anda harus memberikan nomor / nama unik Anda sendiri.
  • Tentukan tingkat risiko - selalu penting untuk memahami seberapa penting dampak dari mengeksploitasi kerentanan ini bagi Anda. Misalnya, apakah itu akan menjadi kebocoran informasi atau akses ke database.
  • Tentukan versi perangkat lunak mana yang berisiko - penting untuk memahami apakah Anda berisiko atau tidak berisiko.
  • Tentukan di bawah konfigurasi perangkat lunak apa masalah mungkin muncul - beberapa kerentanan hanya dapat muncul dengan konfigurasi tertentu dari perangkat lunak Anda.
  • Buatlah daftar Bukti konsep eksploitasi atau muatan yang digunakan selama serangan / tes - banyak publikasi kerentanan disertai dengan kode PoC yang menunjukkan kerentanan. Jika data tersebut tersedia, analisislah. Ini akan berguna dalam pengembangan lebih lanjut dan pengujian tambalan virtual.

Tahap membuat tambalan virtual

Proses membuat tambalan virtual yang baik terkait dengan dua aspek:

  • Tidak ada positif palsu - tidak pernah memblokir lalu lintas normal dalam keadaan apa pun
  • Tanpa kesalahan positif - jangan pernah melewatkan serangan, bahkan ketika penyerang sengaja mencoba menghindari deteksi.

Upaya harus dilakukan untuk meminimalkan dampak dari kedua aturan ini. Mungkin tidak mungkin (yang paling sering terjadi) untuk mengikuti kedua aturan ini, tetapi penting untuk diingat bahwa tambalan virtual adalah tentang mengurangi risiko.

Pembuatan tambalan virtual secara manual
Pendekatan positif (daftar putih, daftar putih) di tambalan virtual

Pendekatan ini adalah untuk membuat validasi input independen untuk aplikasi web. Pendekatan menentukan karakteristik data yang valid (kumpulan karakter, panjang, dll.) Dan melarang apa pun yang tidak sesuai dengan kondisi ini. Dengan menetapkan aturan untuk setiap parameter pada setiap halaman aplikasi web, kami membungkus aplikasi dalam lapisan perlindungan tambahan, terlepas dari kode sumbernya.

Contoh membuat tambalan virtual berdasarkan daftar putih di ModSecurity
Untuk membuat tambalan virtual yang masuk daftar putih, kami harus dapat memverifikasi nilai yang diharapkan normal. Jika pencatatan yang benar telah dikonfigurasikan sebelumnya sebagai bagian dari fase persiapan, maka melalui tinjauan log Anda harus dapat memahami format dari nilai input yang diharapkan.

Sebuah contoh

Dalam hal ini, parameter reqID seharusnya hanya berisi bilangan bulat sehingga kita dapat menerapkan tambalan virtual ini:

 # # ,     1    "reqID" # SecRule REQUEST_URI "@contains /wp-content/plugins/levelfourstorefront/scripts/administration/exportsubscribers.php" "chain,id:1,phase:2,t:none,t:Utf8toUnicode,t:urlDecodeUni,t:normalizePathWin,t:lowercase,block,msg:'Input Validation Error for \'reqID\' parameter - Duplicate Parameters Names Seen.',logdata:'%{matched_var}'" SecRule &ARGS:/reqID/ "!@eq 1" # # ,   reqID     # SecRule REQUEST_URI "@contains /wp-content/plugins/levelfourstorefront/scripts/administration/exportsubscribers.php" "chain,id:2,phase:2,t:none,t:Utf8toUnicode,t:urlDecodeUni,t:normalizePathWin,t:lowercase,block,msg:'Input Validation Error for \'reqID\' parameter.',logdata:'%{args.reqid}'" SecRule ARGS:/reqID/ "!@rx ^[0-9]+$" 

Patch virtual ini akan menganalisis parameter reqID dan hanya mengizinkan bilangan bulat dalam input. Namun, perlu diingat bahwa vektor serangan hampir tidak pernah tunggal dan penyerang dapat mencoba peruntungannya dengan cara lain.

Pendekatan negatif (daftar hitam, daftar hitam) dalam tambalan virtual

Pendekatan ini didasarkan pada daftar aturan yang menentukan serangan tertentu yang diketahui daripada hanya mengizinkan lalu lintas yang valid.

Contoh membuat tambalan virtual berdasarkan daftar hitam di ModSecurity

Misalnya, kode PoC dari sumber publik:

 http://localhost/wordpress/wp-content/plugins/levelfourstorefront/scripts/administration/exportsubscribers.php?reqID=1' or 1='1 

Setelah menganalisis beban, kita dapat melihat bahwa penyerang memasukkan penawaran tunggal dan menambahkan logika SQL sampai akhir. Berdasarkan data ini, kami dapat melarang penawaran tunggal:

 SecRule REQUEST_URI "@contains /wp-content/plugins/levelfourstorefront/scripts/administration/exportsubscribers.php" "chain,id:1,phase:2,t:none,t:Utf8toUnicode,t:urlDecodeUni,t:normalizePathWin,t:lowercase,block,msg:'Input Validation Error for \'reqID\' parameter.',logdata:'%{args.reqid}'" SecRule ARGS:/reqID/ "@pm '" 

Waspadalah terhadap pembuatan tambalan virtual untuk eksploitasi tertentu

Tentu saja, ini terlihat menarik dan hemat waktu. Misalnya, jika pentest menemukan XSS di laman Anda dan menggunakan pemuatan berikut:

 <script> alert('XSS Test') </script> 

Tidak masuk akal untuk membuat tambalan virtual yang secara spesifik akan memblokir beban semacam itu, betapapun menariknya dalam hal upaya dan kecepatan. Patch virtual perlu dibuat untuk menutup masalah secara keseluruhan, dan bukan kasus spesifiknya.

Secara otomatis membuat tambalan virtual

Pembuatan tambalan manual dapat menjadi tak tertahankan karena meningkatnya kerentanan dan otomatisasi menjadi langkah yang perlu. Jika kerentanan ditemukan menggunakan alat otomatis (misalnya, pemindai kerentanan), maka dimungkinkan untuk mengubah laporan alat ini menjadi tambalan. Alat otomatisasi patch yang paling populer adalah impor langsung ke WAF (tentu saja, jika solusi Anda mendukung hal ini), Script OWASP ModSecurity Core Rule Set (CRS), dan ThreadFix Virtual Patching.

Tahap implementasi dan pengujian

Untuk menguji patch virtual baru kami dengan benar, kami mungkin memerlukan alat berikut:

  • browser web
  • utilitas web untuk terminal (misal, ikal dan goyang)
  • proxy lokal
  • ModSecurity AuditViewer

Langkah-langkah:

  • Terapkan tambalan virtual terlebih dahulu dalam mode "hanya log", untuk memastikan bahwa lalu lintas pengguna normal tidak diblokir (opsi false-positive).
  • Jika kerentanan ditemukan menggunakan alat atau perintah khusus, minta diperiksa ulang.
  • Jika pengujian ulang gagal karena tambalan virtual dapat dilewati, Anda harus kembali ke langkah analisis untuk menentukan cara terbaik untuk menutup masalah.

Tahap Pemulihan / Lanjutan

  • Perbarui data di sistem tiket Anda - meskipun tenggat waktu untuk menginstal tambalan virtual mungkin aktif, lebih baik untuk melacak dan memperbarui perubahan dalam sistem pelacakan Anda. Ini akan memungkinkan untuk lebih memadai dan lebih sepenuhnya menangani masalah asli, dengan kemungkinan lebih rendah bahwa beberapa detail akan terlewatkan. Hal ini juga memungkinkan Anda untuk menilai waktu yang dihabiskan pada setiap tahap penyelesaian masalah dengan lebih akurat.
  • Evaluasi ulang secara berkala - ini membantu untuk memahami tambalan virtual mana yang dapat dihapus / segera, karena misalnya tambalan kode sumber lengkap telah / akan diterapkan.
  • Menyiapkan laporan tambalan virtual Anda - ini akan membantu untuk memahami kapan dan berapa kali mereka akan terlibat. Ini pada gilirannya akan memberi Anda statistik tempat-tempat yang lebih berisiko bagi Anda.

Source: https://habr.com/ru/post/id481774/


All Articles