Analisis Kode Sumber Statis untuk Aplikasi World wide web, Kasus
Tren dan Temuan
Selama beberapa tahun terakhir, kami telah mengidentifikasi sejumlah fitur dan tren umum dalam keamanan sistem, serangan berbahaya, dan pengujian aplikasi internet umum. Dari jumlah tersebut, sejumlah masalah pengujian keamanan menarik dan dapat diatasi dari waktu ke waktu melalui pendekatan yang ditargetkan.
Dalam eighteen bulan terakhir kami telah melakukan respon insiden dan manajemen insiden untuk sejumlah besar klien yang relatif signifikan. Melalui ini, terlihat bahwa sekitar 50% dari kompromi yang terjadi telah dilakukan melalui serangan tingkat aplikasi. Secara umum, akar penyebab serangan adalah:
1. Perangkat lunak yang disediakan seller (termasuk yang sudah ada dan dibuat khusus) yang memiliki sejumlah ketidakamanan dan kerentanan perangkat lunak yang tidak disadari oleh pelanggan
2. Satu kesalahan konfigurasi yang menghasilkan kompromi penuh yang menunjukkan kurangnya strategi dan implementasi pertahanan yang mendalam
Poin lain yang kami amati adalah bahwa:
Serangan tingkat Server dan Sistem Operasi cenderung stabil, dengan perusahaan besar secara signifikan lebih buruk daripada perusahaan kecil dalam mengelola kerentanan dan ketidakamanan.
Ada relatif sedikit serangan “zero-working day” sebagian besar serangan adalah hasil dari serangan pemindaian alat otomatis.
Deteksi serangan sangat buruk, dengan kompromi hanya terdeteksi sebagai akibat dari perilaku menyimpang oleh sistem.
Kami juga telah melakukan sejumlah besar pengujian intrusi jaringan dan aplikasi (pengujian penetrasi) selama beberapa tahun terakhir, dengan sejumlah tren yang muncul:
Pengujian tingkat infrastruktur melihat pengurangan rasa tidak aman, sebagian besar disebabkan oleh tren yang lebih baik seputar manajemen kerentanan.
Penerapan aplikasi web oleh klien baru (baru) kemungkinan akan memiliki sejumlah besar masalah keamanan aplikasi net, dengan segala sesuatu mulai dari databases yang terbuka hingga serangan tingkat injeksi SQL yang mungkin terjadi. Pengujian lebih lanjut dari waktu ke waktu menunjukkan bahwa hubungan dengan perusahaan keamanan untuk tujuan pengujian keamanan sumber menghasilkan pengurangan ketidakamanan dalam aplikasi net.
“Semakin besar mereka, semakin keras mereka jatuh”. source code php ada tren yang pasti menuju perusahaan besar yang memiliki jumlah ketidakamanan yang lebih tinggi, terutama di ruang aplikasi net. Akar penyebab hal ini tidak jelas namun ada hubungan dengan outsourcing, dan kebutuhan akan organisasi besar untuk “mengamankan segalanya”. Ini juga berlaku untuk perusahaan yang lebih kecil namun perusahaan yang lebih kecil cenderung memiliki infrastruktur yang jauh lebih sedikit untuk dikhawatirkan.
Tentu saja kita telah melihat manajemen dan analisis kerentanan mulai diterapkan di dalam organisasi namun hanya benar-benar jaringan, sistem operasi, dan tingkat server yang sedang dikerjakan oleh sebagian besar perusahaan. Ini sebagian besar didasarkan pada gagasan bahwa pemindaian kerentanan dan produk serta layanan remediasi semakin matang di ruang ini. Tentu saja sementara ada alat yang matang di ruang pengujian keamanan aplikasi, mereka masih cukup reaktif, dan akan memakan waktu beberapa tahun untuk menjadi matang dan mainstream.
Dari penelitian dan analisis kerentanan yang kami lakukan, terlihat bahwa pengembangan aplikasi masih buruk dari segi keamanan. Tidak semua ini dapat disalahkan langsung pada pengembang dengan begitu banyak tekanan untuk mengeluarkan produk dari pintu, keamanan sering diberikan kursi belakang. Kami juga perlu fokus pada pelatihan pengembang perangkat lunak kami untuk membuat kode dengan aman, tetapi kami saat ini melakukan pekerjaan yang sangat buruk dalam hal itu. Sejumlah kerentanan keamanan lapisan aplikasi yang kita lihat baik di rak dan sistem open up resource hanyalah contoh baru kerentanan yang sudah terkenal. Berapa lama kita mengetahui tentang buffer overflows dan masalah injeksi SQL? Jadi mengapa kita masih melihat mereka? Untuk diskusi lebih lanjut tentang beberapa hal ini, lihat presentasi Ruxcon Brett Moore tentang “bug yang sama, aplikasi yang berbeda”.
Sebagai catatan terakhir untuk bagian ini, sebagai sebuah organisasi, kami sangat hebat dalam pengujian aplikasi dan analisis kode sumber, tetapi sangat benci menjadi orang yang merusak sistem two hari sebelum dijadwalkan untuk ditayangkan. Statistiknya ada di sana merancang keamanan pada fase awal proyek, dan biaya serta dampak perbaikan jauh lebih sedikit daripada mencoba memperbaikinya ketika Anda baru saja akan meluncurkannya, dan secara dramatis lebih murah daripada mencoba memperbaikinya sekali dalam produksi. Kami mulai melihat tren menuju kepatuhan dan jaminan keamanan mendaki rantai nilai siklus hidup pengembangan sistem. Lama semoga berlanjut…!
tempat tidur bayi
Jadi siapa yang menguji produk vendor (Typical Off The Shelf) untuk masalah keamanan aplikasi web sebelum diluncurkan ke lingkungan produksi? Khususnya di mana sebelumnya telah digunakan ke situs klien lain? Betulkah? Berapa banyak dari Anda yang meninjau keamanan kode sumber dalam kode yang dikembangkan oleh agen outsourcing dan/atau tim pengembangan Anda?
Kami telah melihat yang baik dan yang buruk di ruang ini. Dalam sejumlah kasus, kami telah menguji dan merusak aplikasi web yang digunakan secara luas di seluruh dunia, dan ternyata sangat kurang. Ini belum tentu hanya sebuah plug untuk seberapa baik kita ini lebih merupakan dakwaan atas kurangnya pengujian keamanan aplikasi yang dilakukan oleh perusahaan lain yang telah membeli dan mengimplementasikan produk ini. Sungguh teman-teman, beberapa serangan dan eksploitasi hanya dasar biasa …
Pesan sebenarnya adalah setidaknya melakukan tinjauan kode sumber jika memungkinkan, atau uji intrusi aplikasi jika Anda bisa. Sistem COTS tidak secara otomatis aman hanya karena seberapa luas mereka digunakan. Jika Anda khawatir tentang keamanan suatu produk, minta pengembang untuk merilis kode sumber kepada Anda untuk jaminan dan pengujian. Berdasarkan temuan kami, setidaknya twenty-30% dari aplikasi net (baik COTS disediakan atau outsourcing) memiliki kerentanan yang signifikan.
Bagaimana dengan pengembangan aplikasi outsourcing Anda? Tentu saja Anda menyadari bahwa Anda bertanggung jawab atas keamanan perangkat lunak yang buruk dan melakukan audit kode sumber dengan tepat saat kode dikirimkan? Serius, ada kurangnya uji tuntas dalam meninjau sistem yang disampaikan baik di tingkat aplikasi atau kode sumber, yang kami yakini alasan utamanya adalah kurangnya akuntabilitas yang diterapkan, dan (sampai saat ini) hal ini belum tentu murah untuk diuji. Masalah besar lainnya yang kami temukan adalah kurangnya standar pengujian keamanan, dan standar keamanan dalam pengembangan aplikasi.
Produk dan alat mencapai titik di mana sekarang memungkinkan untuk melakukan pemeriksaan kepatuhan dan audit keamanan yang wajar terhadap sistem yang disediakan oleh vendor / outsourcing tanpa biaya inheren yang terkait dengan audit kode sumber handbook. Ukur kinerja mereka! Akuntabilitas bukanlah sesuatu yang dapat di-outsource dengan mudah, dan praktik yang wajar adalah memastikan bahwa kontrak Anda dengan vendor/outsourcer Anda setidaknya mencakup harapan Anda terhadap standar dan praktik pengkodean world wide web (atau setidaknya meninjau dan meneliti mereka), dan untuk melakukan beberapa bentuk pemeriksaan kepatuhan standar-standar ini terhadap kode yang dikirimkan. Bagaimana jika tidak, Anda tahu apakah aplikasi yang dikirimkan aman? Kepercayaan dan keyakinan buta?
Leave a Reply