Ini adalah bahan pertama dari serangkaian artikel tentang OWASP Top 10 Project, sebuah proyek yang dimulai sebagai ide untuk penggemar dan menjadi sumber paling otoritatif untuk mengklasifikasikan vektor serangan dan kerentanan dalam aplikasi web.
Dalam artikel ini, kami akan menganalisis secara singkat semua kerentanan utama dari daftar OWASP Top 10, dan juga melihat mengapa sangat penting untuk mengetahui tentang kerentanan khas untuk mengembangkan aplikasi yang aman.
Sekitar 10 tahun yang lalu, beberapa orang yang sangat jeli merumuskan mantra baru - HTTP adalah TCP baru. Tentu saja, tidak dalam arti bahwa orang tersebut memutuskan untuk menempatkan HTTP pada level transportasi. Tidak mungkin! Hanya untuk komunikasi modern, protokol HTTP melakukan fungsi yang sama dengan TCP pada levelnya - sebagian besar aplikasi modern, termasuk yang mobile, menggunakan HTTP sebagai transportasi. Dan dengan munculnya HTTP 2.0, situasi ini telah teratasi dan dalam waktu dekat, tampaknya itu tidak akan berubah. Protokol telah menjadi standar pengiriman konten secara de facto, dan HTTP tidak lagi dapat dilihat sebagai protokol web.
Tampaknya HTTP selalu ada, dan ini hampir benar ketika Anda mempertimbangkan bahwa spesifikasi resmi pertama di RFC muncul pada tahun 1997, meskipun protokol itu sendiri mulai digunakan lebih awal.
Butuh sedikit waktu untuk memahami bahwa begitu protokol menjadi populer, semua orang akan mulai menggunakannya untuk mengirimkan konten, seringkali tanpa kualifikasi yang tepat. Dan hasilnya adalah ratusan ribu sistem yang rentan di seluruh dunia dan prospek yang tidak jelas untuk memperbaiki situasi.
Dalam hal keputusan vendor tertentu, Anda selalu dapat beralih ke materi atau bertanya langsung: "apa cara terbaik untuk bertindak?" - dan dapatkan jawaban yang memenuhi syarat, karena pada akhirnya hanya vendor yang bertanggung jawab atas produknya. Ketika datang untuk menggunakan standar terbuka dan alat untuk membangun aplikasi, sumber informasi yang tidak memihak tentang praktik terbaik diperlukan. Sumber seperti itu bisa penggemar, atau mungkin seluruh komunitas profesional di bidang ini.
Tawon terbang
Di bidang keamanan aplikasi web, OWASP (Proyek Keamanan Aplikasi Web Terbuka) telah menjadi komunitas semacam itu. Tentu saja, OWASP adalah organisasi nirlaba yang tidak berafiliasi dengan perusahaan teknologi mana pun. Situasi ini memungkinkan Anda untuk memberikan informasi praktis yang tidak memihak tentang teknologi perlindungan aplikasi web untuk organisasi, lembaga pendidikan, layanan pemerintah, dan bahkan individu yang tertarik dengan masalah ini.
Jadi apa sebenarnya yang dilakukan OWASP? Dalam kompetensinya, OWASP memiliki dua tugas utama: menghasilkan dokumentasi dan menyediakan alat, dan benar-benar gratis.
Dalam seri artikel ini, kami akan menganalisis, mungkin, materi OWASP TOP 10 Project yang paling populer. Ini adalah dokumen yang mencantumkan risiko paling signifikan dan kritis dari aplikasi web. Keputusan untuk memasukkan kerentanan dalam daftar ini didasarkan pada pendapat pakar pakar keamanan informasi dari seluruh dunia (di mana tanpanya), dan pada umumnya, memahami kerentanan ini adalah langkah pertama untuk mengubah budaya pengembangan perangkat lunak.
Anda perlu memahami dengan jelas bahwa, sebagai suatu peraturan, semua kerentanan ini tidak didasarkan pada kesalahan programmer tertentu atau kerentanan protokol itu sendiri, tetapi pada masalah arsitektur desain perangkat lunak. Dan untuk pentester pemula, daftar ini sangat diperlukan untuk dipelajari!
Sepuluh Mantra Mematikan
Daftar kerentanan terus diperbarui dan untuk 2017 adalah sebagai berikut:
• A1: 2017 - Suntikan, alias "Injeksi Kode"
Kita berbicara tentang semua jenis injeksi: SQL, NoSQL, LDAP - apa pun. Injeksi kode menjadi mungkin ketika data yang tidak diverifikasi dikirim ke penerjemah sebagai bagian dari perintah atau permintaan. Permintaan "jahat" semacam itu dijalankan dengan aman dan merugikannya sendiri. Dalam 90% kasus, ketika Anda mendengar bahwa basis data pribadi diakses melalui web, ini hanya A1 kami.
• A2: 2017 - Otentikasi salah
Fungsi aplikasi yang bertanggung jawab untuk otentikasi dan manajemen sesi sering digunakan secara tidak benar, yang melibatkan kompromi kata sandi, kunci, token sesi, dan bahkan kemampuan untuk sepenuhnya mencegat sesi pengguna. Ketika Anda duduk di wifi publik dan tiba-tiba menemukan bahwa beberapa tindakan sedang dilakukan atas nama Anda di sumber daya web publik - ini adalah A2.
• A3: 2017 - Pengungkapan informasi sensitif
Banyak aplikasi web dan API dapat secara tidak benar menyimpan dan memproses informasi sensitif, seperti data pribadi. Penyerang dapat mencuri atau mengubah informasi tersebut, yang dapat menjadi dasar bagi kerugian finansial atau reputasi yang serius. Informasi sensitif harus disimpan dengan benar dan juga dilindungi selama transmisi melalui saluran komunikasi.
• A4: 2017 - Implementasi entitas XML eksternal (XXE)
Banyak prosesor XML yang lebih tua atau dikonfigurasi secara bengkok dapat menggunakan data eksternal dari tautan dalam file XML. Data eksternal tersebut dapat berisi kode berbahaya yang akan memungkinkan Anda untuk mengeksekusi hampir semua kode asing pada mesin target.
• A5: 2017 - Kontrol akses yang dilanggar
Matriks akses, yang begitu bagus di atas kertas, dapat dicoba secara keliru ke sistem tertentu, sehingga pengguna yang tidak sah dengan mudah mendapatkan akses ke area situs yang tertutup atau mendapatkan kesempatan untuk mengubah hak atas sumber daya atas kebijakan mereka.
• A6: 2017-Security Misconfiguration - Kesalahan dalam konfigurasi
Di sini kita berbicara tentang beberapa hal global, seperti kurangnya pembaruan tepat waktu dari server dan perangkat lunak aplikasi, keberadaan informasi penting dalam pesan kesalahan atau bahkan dalam header HTTP. Aplikasi mungkin hampir sempurna, tetapi jika server web yang menjalankannya memiliki masalah dengan konfigurasi dasar, maka semuanya tidak berguna.
• A7: 2017 - Crossite Scripting (XSS)
XSS terjadi ketika aplikasi menyertakan data yang tidak dipercaya tanpa verifikasi yang tepat. Misalnya, kode program banner iklan dapat berisi skrip untuk mencegat data pengguna, wajah situs, atau bahkan secara transparan mengarahkan ulang ke situs lain.
• A8: 2017 - deserialisasi yang tidak aman
Deserialisasi yang tidak aman biasanya mengarah pada eksekusi kode jarak jauh. Intinya adalah bahwa data yang tidak dipercaya dapat menghancurkan logika aplikasi Anda segera setelah deserialized. Sekilas kerentanan yang agak eksotik, bagaimanapun, mengambil tempat kehormatan dalam daftar.
• A9: 2017 - Menggunakan komponen dengan kerentanan yang diketahui
Perpustakaan, kerangka kerja, sistem operasi dan komponen lain dari sistem informasi perlu diperbarui tepat waktu. Jika tidak, kerentanan yang diketahui di satu perpustakaan dapat membahayakan layanan besar yang bahkan menggunakan satu fungsi dari perpustakaan yang rentan.
• A10: 2017 - Pencatatan dan pemantauan yang tidak memadai
Semuanya sederhana di sini - Anda membangun sistem yang hebat, tetapi Anda lupa memasang alat pemantauan. Ini bahkan bukan tentang sistem SIEM yang terhubung, tetapi hanya tentang penebangan dangkal peristiwa server utama. Sayangnya, tidak jarang ketika sistem peretasan diketahui enam bulan setelah peretasan itu sendiri, dan mereka mengetahui hal ini bukan dari log, tetapi dari pengamat eksternal.
Pada artikel berikut, kami akan mulai menganalisis secara lebih rinci masing-masing kerentanan ini. Kami akan mempersenjatai diri dengan alat yang diperlukan dan melihat bagaimana kerentanan ini diimplementasikan dalam praktik.
Disiapkan oleh
Sergey Polunin .