Pengimbasan kerentanan dan pembangunan selamat. Bahagian 1

Pengimbasan kerentanan dan pembangunan selamat. Bahagian 1

Sebagai sebahagian daripada aktiviti profesional mereka, pembangun, pentester dan pakar keselamatan perlu berurusan dengan proses seperti Pengurusan Kerentanan (VM), (Secure) SDLC.
Di bawah frasa ini terdapat set amalan dan alatan yang berbeza yang digunakan yang saling berkaitan, walaupun penggunanya berbeza.

Kemajuan teknikal masih belum mencapai tahap di mana satu alat boleh menggantikan seseorang untuk menganalisis keselamatan infrastruktur dan perisian.
Adalah menarik untuk memahami mengapa ini berlaku dan apa masalah yang dihadapi.

Proses

Proses Pengurusan Keterdedahan direka bentuk untuk pemantauan berterusan keselamatan infrastruktur dan pengurusan tampung.
Proses Secure SDLC (β€œkitaran pembangunan selamat”) direka bentuk untuk mengekalkan keselamatan aplikasi semasa pembangunan dan operasi.

Bahagian yang serupa dalam proses ini ialah proses Penilaian Keterdedahan - penilaian kerentanan, pengimbasan kerentanan.
Perbezaan utama antara pengimbasan VM dan SDLC ialah dalam kes pertama matlamatnya adalah untuk mengesan kelemahan yang diketahui dalam perisian atau konfigurasi pihak ketiga. Contohnya, versi Windows yang lapuk atau rentetan komuniti lalai untuk SNMP.
Dalam kes kedua, matlamatnya ialah untuk mengesan kelemahan bukan sahaja dalam komponen pihak ketiga (bergantung), tetapi terutamanya dalam kod produk baharu.

Ini mewujudkan perbezaan dalam alat dan pendekatan. Pada pendapat saya, tugas mencari kelemahan baharu dalam aplikasi adalah lebih menarik, kerana ia tidak turun kepada versi cap jari, mengumpul sepanduk, kata laluan yang memaksa, dsb.
Untuk pengimbasan automatik yang berkualiti tinggi terhadap kelemahan aplikasi, algoritma diperlukan yang mengambil kira semantik aplikasi, tujuannya dan ancaman khusus.

Pengimbas infrastruktur selalunya boleh digantikan dengan pemasa, seperti yang saya katakan avleonov. Intinya ialah, secara statistik semata-mata, anda boleh menganggap infrastruktur anda terdedah jika anda tidak mengemas kininya, katakan, selama sebulan.

Tools

Pengimbasan, seperti analisis keselamatan, boleh dilakukan menggunakan sama ada kotak hitam atau kotak putih.

Black Box

Apabila mengimbas kotak hitam, alat itu mesti boleh berfungsi dengan perkhidmatan melalui antara muka yang sama yang digunakan pengguna dengannya.

Pengimbas infrastruktur (Tenable Nessus, Qualys, MaxPatrol, Rapid7 Nexpose, dll.) mencari port rangkaian terbuka, mengumpul "sepanduk", tentukan versi perisian yang dipasang dan cari pangkalan pengetahuan mereka untuk mendapatkan maklumat tentang kelemahan dalam versi ini. Mereka juga cuba mengesan ralat konfigurasi seperti kata laluan lalai atau akses data terbuka, sifir SSL yang lemah, dsb.

Pengimbas aplikasi web (Acunetix WVS, Netsparker, Burp Suite, OWASP ZAP, dll.) juga boleh mengenal pasti komponen yang diketahui dan versinya (contohnya, CMS, rangka kerja, perpustakaan JS). Langkah utama pengimbas adalah merangkak dan kabur.
Semasa merangkak, pengimbas mengumpul maklumat tentang antara muka aplikasi sedia ada dan parameter HTTP. Semasa pengkaburan, data yang dimutasi atau dijana dimasukkan ke dalam semua parameter yang dikesan untuk mencetuskan ralat dan mengesan kelemahan.

Pengimbas aplikasi sedemikian tergolong dalam kelas DAST dan IAST - Ujian Keselamatan Aplikasi Dinamik dan Interaktif, masing-masing.

Kotak Putih

Terdapat lebih banyak perbezaan dengan pengimbasan kotak putih.
Sebagai sebahagian daripada proses VM, pengimbas (Vulners, Incsecurity Couch, Vuls, Tenable Nessus, dll.) sering diberikan akses kepada sistem dengan melakukan imbasan yang disahkan. Oleh itu, pengimbas boleh memuat turun versi pakej yang dipasang dan parameter konfigurasi terus daripada sistem, tanpa menekanya daripada sepanduk perkhidmatan rangkaian.
Imbasan lebih tepat dan lengkap.

Jika kita bercakap tentang pengimbasan kotak putih (CheckMarx, HP Fortify, Coverity, RIPS, FindSecBugs, dll.) aplikasi, maka kita biasanya bercakap tentang analisis kod statik dan penggunaan alat yang sesuai untuk kelas SAST - Ujian Keselamatan Aplikasi Statik.

Masalah

Terdapat banyak masalah dengan pengimbasan! Saya perlu berurusan dengan kebanyakan mereka secara peribadi sebagai sebahagian daripada menyediakan perkhidmatan untuk mengimbas bangunan dan proses pembangunan selamat, serta semasa menjalankan kerja analisis keselamatan.

Saya akan menyerlahkan 3 kumpulan utama masalah, yang disahkan oleh perbualan dengan jurutera dan ketua perkhidmatan keselamatan maklumat dalam pelbagai syarikat.

Isu Pengimbasan Aplikasi Web

  1. Kesukaran pelaksanaan. Pengimbas perlu digunakan, dikonfigurasikan, disesuaikan untuk setiap aplikasi, memperuntukkan persekitaran ujian untuk imbasan dan dilaksanakan dalam proses CI/CD agar ini berkesan. Jika tidak, ia akan menjadi prosedur formal yang tidak berguna yang hanya akan menghasilkan positif palsu
  2. Tempoh imbasan. Malah pada tahun 2019, pengimbas melakukan kerja yang lemah dalam menyahduplikasi antara muka dan boleh menghabiskan hari mengimbas seribu halaman dengan 10 parameter pada setiap satu, menganggapnya berbeza, walaupun kod yang sama bertanggungjawab untuknya. Pada masa yang sama, keputusan mengenai penggunaan kepada pengeluaran dalam kitaran pembangunan mesti dibuat dengan cepat
  3. Cadangan yang kurang baik. Pengimbas memberikan syor yang agak umum, dan pembangun tidak selalu dapat memahami dengan cepat daripada mereka cara mengurangkan tahap risiko, dan yang paling penting, sama ada ia perlu dilakukan sekarang, atau adakah ia masih belum menakutkan.
  4. Kesan yang merosakkan pada aplikasi. Pengimbas mungkin melakukan serangan DoS pada aplikasi, dan juga boleh mencipta sejumlah besar entiti atau menukar yang sedia ada (contohnya, mencipta berpuluh-puluh ribu ulasan pada blog), jadi anda tidak seharusnya melancarkan imbasan dalam pengeluaran.
  5. Kualiti rendah pengesanan kelemahan. Pengimbas biasanya menggunakan tatasusunan muatan tetap dan boleh terlepas dengan mudah kelemahan yang tidak sesuai dengan senario gelagat aplikasi yang diketahui.
  6. Pengimbas tidak memahami fungsi aplikasi. Pengimbas sendiri tidak tahu apa itu "perbankan Internet", "pembayaran", "komen". Bagi mereka, hanya terdapat pautan dan parameter, jadi lapisan besar kemungkinan kelemahan logik perniagaan kekal terbongkar sepenuhnya; mereka tidak akan terfikir untuk membuat hapus kira berganda, mengintip data orang lain dengan ID, atau meningkatkan baki melalui pembundaran
  7. Pengimbas tidak memahami semantik halaman. Pengimbas tidak boleh membaca Soalan Lazim, tidak dapat mengenali captcha, dan mereka sendiri tidak akan mengetahui cara mendaftar dan kemudian log masuk semula, bahawa anda tidak boleh mengklik "log keluar", dan cara menandatangani permintaan apabila menukar parameter nilai. Akibatnya, kebanyakan aplikasi mungkin tidak diimbas sama sekali.

Masalah mengimbas kod sumber

  1. Positif palsu. Analisis statik ialah tugas yang kompleks yang melibatkan banyak pertukaran. Ketepatan sering perlu dikorbankan, malah pengimbas perusahaan yang mahal menghasilkan sejumlah besar positif palsu
  2. Kesukaran pelaksanaan. Untuk meningkatkan ketepatan dan kesempurnaan analisis statik, peraturan pengimbasan perlu diperhalusi, dan menulis peraturan ini boleh menjadi terlalu intensif buruh. Kadangkala lebih mudah untuk mencari semua tempat dalam kod dengan beberapa jenis pepijat dan membetulkannya daripada menulis peraturan untuk mengesan kes sedemikian
  3. Kekurangan sokongan pergantungan. Projek besar bergantung pada sejumlah besar perpustakaan dan rangka kerja yang memanjangkan keupayaan bahasa pengaturcaraan. Jika pangkalan pengetahuan pengimbas tidak mempunyai maklumat tentang "tenggelam" dalam rangka kerja ini, ia akan menjadi titik buta dan pengimbas langsung tidak akan memahami kod itu.
  4. Tempoh imbasan. Mencari kelemahan dalam kod adalah tugas yang kompleks dari segi algoritma. Oleh itu, proses itu mungkin mengambil masa yang lama dan memerlukan sumber pengkomputeran yang ketara.
  5. Liputan rendah. Walaupun penggunaan sumber dan masa pengimbasan, pembangun alat SAST masih perlu membuat kompromi dan menganalisis bukan semua keadaan bahawa program itu mungkin berada dalam
  6. Kebolehulangan penemuan. Menunjuk kepada talian tertentu dan timbunan panggilan yang membawa kepada kerentanan adalah bagus, tetapi pada hakikatnya, selalunya pengimbas tidak memberikan maklumat yang mencukupi untuk memeriksa kehadiran kelemahan dari luar. Lagipun, kecacatan itu juga mungkin dalam kod mati, yang tidak dapat dicapai oleh penyerang

Masalah pengimbasan infrastruktur

  1. Inventori tidak mencukupi. Dalam infrastruktur besar, terutamanya yang dipisahkan secara geografi, selalunya paling sukar untuk mengetahui hos mana yang hendak diimbas. Dengan kata lain, tugas pengimbasan berkait rapat dengan tugas pengurusan aset
  2. Pengutamaan yang lemah. Pengimbas rangkaian sering menghasilkan banyak hasil dengan kelemahan yang tidak boleh dieksploitasi dalam amalan, tetapi secara rasmi tahap risikonya adalah tinggi. Pengguna menerima laporan yang sukar untuk ditafsir, dan tidak jelas apa yang perlu diperbetulkan terlebih dahulu.
  3. Cadangan yang kurang baik. Pangkalan pengetahuan pengimbas selalunya mengandungi maklumat yang sangat umum tentang kelemahan dan cara membetulkannya, jadi pentadbir perlu mempersenjatai diri mereka dengan Google. Keadaan ini lebih baik sedikit dengan pengimbas kotak putih, yang boleh mengeluarkan arahan khusus untuk diperbaiki
  4. Buatan tangan. Infrastruktur boleh mempunyai banyak nod, yang bermaksud kemungkinan banyak kelemahan, laporan yang mesti dihuraikan dan dianalisis secara manual pada setiap lelaran
  5. Liputan yang lemah. Kualiti pengimbasan infrastruktur secara langsung bergantung pada saiz pangkalan pengetahuan tentang kelemahan dan versi perisian. Di mana, rupa-rupa nya, malah pemimpin pasaran tidak mempunyai pangkalan pengetahuan yang komprehensif, dan pangkalan data penyelesaian percuma mengandungi banyak maklumat yang tidak dimiliki oleh pemimpin
  6. Masalah dengan menampal. Selalunya, menampal kelemahan infrastruktur melibatkan pengemaskinian pakej atau menukar fail konfigurasi. Masalah besar di sini ialah sistem, terutamanya sistem lama, boleh berkelakuan tidak dapat diramalkan akibat kemas kini. Pada asasnya, anda perlu menjalankan ujian penyepaduan pada infrastruktur langsung dalam pengeluaran.

Pendekatan

Bagaimana yang boleh?
Saya akan memberitahu anda lebih lanjut mengenai contoh dan cara menangani banyak masalah yang disenaraikan di bahagian berikut, tetapi buat masa ini saya akan menunjukkan arah utama di mana anda boleh bekerja:

  1. Pengagregatan pelbagai alat pengimbasan. Dengan penggunaan beberapa pengimbas yang betul, anda boleh mencapai peningkatan yang ketara dalam pangkalan pengetahuan dan kualiti pengesanan. Anda boleh menemui lebih banyak kerentanan daripada jumlah semua pengimbas yang dilancarkan secara berasingan, sementara anda boleh menilai tahap risiko dengan lebih tepat dan membuat lebih banyak cadangan
  2. Integrasi SAST dan DAST. Adalah mungkin untuk meningkatkan liputan DAST dan ketepatan SAST dengan bertukar-tukar maklumat antara mereka. Daripada sumber anda boleh mendapatkan maklumat tentang laluan sedia ada dan menggunakan DAST anda boleh menyemak sama ada kelemahan itu boleh dilihat dari luar
  3. Pembelajaran Mesinβ„’. Pada tahun 2015 saya memberitahu (dan lebih lagi) tentang menggunakan statistik untuk memberi pengimbas gerak hati penggodam dan mempercepatkannya. Ini pastinya makanan untuk pembangunan analisis keselamatan automatik pada masa hadapan.
  4. Penyepaduan IAST dengan autotest dan OpenAPI. Dalam saluran paip CI/CD, adalah mungkin untuk membuat proses pengimbasan berdasarkan alat yang berfungsi sebagai proksi HTTP dan ujian berfungsi yang berfungsi melalui HTTP. Ujian dan kontrak OpenAPI/Swagger akan memberikan pengimbas maklumat yang hilang tentang aliran data dan membolehkan untuk mengimbas aplikasi di pelbagai negeri
  5. Konfigurasi yang betul. Untuk setiap aplikasi dan infrastruktur, anda perlu membuat profil pengimbasan yang sesuai, dengan mengambil kira bilangan dan sifat antara muka dan teknologi yang digunakan
  6. Penyesuaian pengimbas. Selalunya aplikasi tidak boleh diimbas tanpa mengubah suai pengimbas. Contohnya ialah gerbang pembayaran, di mana setiap permintaan mesti ditandatangani. Tanpa menulis penyambung kepada protokol get laluan, pengimbas akan membombardir permintaan dengan tandatangan yang salah secara tidak sengaja. Ia juga perlu menulis pengimbas khusus untuk jenis kecacatan tertentu, seperti Rujukan Objek Langsung Tidak Selamat
  7. Pengurusan Risiko. Penggunaan pelbagai pengimbas dan penyepaduan dengan sistem luaran seperti Pengurusan Aset dan Pengurusan Ancaman akan membolehkan penggunaan banyak parameter untuk menilai tahap risiko, supaya pengurusan boleh mendapatkan gambaran yang mencukupi tentang keadaan keselamatan semasa pembangunan atau infrastruktur.

Nantikan dan mari ganggu pengimbasan kelemahan!

Sumber: www.habr.com

Tambah komen