Full Stack Blues: Menjelajahi Kerentanan Di Tumpukan MEAN
Pengembangan tumpukan penuh sangat populer akhir-akhir ini, dan untuk alasan yang bagus: pengembang dengan keterampilan pengembangan web front-end dan kecakapan pengkodean back-end/server jelas menawarkan nilai yang jauh lebih besar bagi organisasi masing-masing. Kemampuan untuk melintasi seluruh tumpukan secara kompeten juga membuat interaksi dan kerja sama dengan operasi dan keamanan menjadi urusan yang lebih mudah—prinsip utama budaya DevOps.
Meskipun demikian, pendekatan tumpukan penuh—terlepas dari manfaatnya—mengharuskan pengembang untuk membuat pertimbangan penting yang tidak akan mereka miliki sebelumnya, terutama dalam hal keamanan dan pengujian. Misalnya, di masa lalu DBA atau administrator sistem khusus mungkin ditugaskan untuk memvalidasi keamanan database atau memperkuat sistem yang mendasarinya. Untuk pengembang tumpukan penuh, tugas-tugas ini sekarang menjadi permainan terbuka—selanjutnya, pergeseran pola pikir secara keseluruhan terhadap keamanan diperlukan untuk mengembangkan dan mengirimkan perangkat lunak secara aman secara berkelanjutan.
Memiliki eksposur yang mendalam ke semua lapisan tumpukan menempatkan pengembang tumpukan penuh di kursi depan untuk mempertahankan postur keamanan aplikasi. Oleh karena itu, sangat penting bahwa risiko dan implikasi keamanan dari setiap teknologi konstituen dipahami sepenuhnya. Sebagai contoh representatif, tumpukan MEAN adalah kerangka kerja tumpukan penuh populer yang disederhanakan untuk kinerja: MongoDB, Express.JS, Angular.JS, dan Node.JS. Karena semua lapisan tumpukan ditulis dalam JavaScript, pengembang hanya perlu menulis kode aplikasi—depan ke belakang, klien ke server—dalam JavaScript. Dan karena pengembang ini juga sekarang berada di kait untuk memberikan aplikasi web yang aman, mereka juga harus mengatasi kerentanan dan memvalidasi semua lapisan aplikasi untuk keamanan. Tapi seberapa rentan setiap lapisan untuk dikompromikan? Mari kita lihat sepintas ke dalam tumpukan MEAN untuk mengetahuinya.
MongoDB
MongoDB adalah database NoSQL yang ramah JavaScript dan berorientasi dokumen yang bersaing dengan orang-orang seperti Cassandra dan HBase. Secara umum, untuk sebagian besar tujuan—MongoDB sebagian besar dapat digunakan dengan cara yang sama seperti MySQL. Lihat perbandingan MongoDB vs. MySQL kami untuk perbandingan lengkap kedua teknologi tersebut.
Kesalahpahaman umum adalah bahwa MongoDB kebal terhadap serangan tipe injeksi SQL. Meskipun benar bahwa MongoDB tidak rentan terhadap penyalahgunaan bahasa SQL, dokumen JSON-nya masih dapat diubah untuk mencapai hasil berbahaya yang sama. Selain itu, MongoDB memiliki kerentanannya sendiri—misalnya, kerentanan yang tersebar luas yang baru-baru ini ditemukan memberi peretas kemampuan untuk merusak aplikasi database dari jarak jauh. Selain itu, membaca dengan teliti database Common Vulnerabilities and Exposures (CVE) mengungkapkan sejumlah eksposur dan kerentanan keamanan untuk MongoDB.
Express.JS
Express.JS adalah kerangka kerja aplikasi seluler dan web sisi server untuk Node.JS, mirip dengan Ruby-on-Rails atau Sinatra untuk bahasa Ruby. Kerangka kerja ini dibangun di atas Node.JS untuk menyediakan komponen standar untuk merampingkan pengembangan, dan sebenarnya merupakan kerangka kerja Node.js yang paling banyak digunakan saat ini. Sayangnya, kerangka kerja ini rentan terhadap berbagai serangan injeksi dan lintas situs dan rentan terhadap semua kerentanan yang mendasari Node.js. Situs Express.JS memelihara daftar kerentanan dan perbaikan per versi yang diperbarui.
Angular.JS
Dikembangkan dan dikelola oleh Google, Angular.js adalah kerangka kerja MVC front-end yang memungkinkan pengembangan sisi klien modular dengan kode minimal. Kerangka kerja ini rentan terhadap berbagai serangan skrip lintas situs—daftar lengkap kerentanan Angular.js tersedia di beranda proyek Mustache Security di Google Code.
Node.JS
Pertanyaan yang lebih penting dan sulit bukanlah mengapa, tetapi bagaimana—yaitu, bagaimana perusahaan tidak hanya dapat bertahan, tetapi juga berkembang dalam lanskap ancaman digital?
Node.js memungkinkan pembuatan aplikasi web dengan kemampuan sisi server dan jaringan yang luas dan memungkinkan komunikasi dua arah secara real-time antara klien dan server. Berdasarkan mesin Javascript V8 Google, Node.js populer untuk membuat server web HTTP dengan cepat. Bisa dibilang komponen penentu dari tumpukan MEAN, Node.js bukannya tanpa kerentanannya sendiri—tidak hanya mewarisi semua kerentanan terkait JavaScript, tetapi juga mendapatkan beberapa vektor serangan baru saat mengeksekusi di sisi server. Basis data CVE juga menampung daftar lengkap kerentanan Node.JS.
Singkatnya, pengembangan tumpukan penuh mungkin merupakan perwujudan dari DevOps, tetapi tetap membutuhkan kepatuhan yang ketat terhadap praktik pengembangan aplikasi yang aman. Tumpukan MEAN, dan tumpukan apa pun dalam hal ini—baik itu LAMP atau .NET—memerlukan kontrol yang tepat untuk memastikan bahwa keamanan dipanggang di semua fase pengembangan. Untuk tujuan ini, UpGuard menyediakan penilaian dan pemantauan kerentanan yang komprehensif untuk aplikasi web, database, server—terlepas dari tumpukan mana yang digunakan, platform kami dapat memindai dan memvalidasi setiap lapisan.
Sumber
https://blog.websecurify.com/2014/08/hacking-nodejs-and-mongodb.html
https://www.cvedetails.com/product/22804/Nodejs-Nodejs.html?vendor_id=12113
https://code.google.com/archive/p/mustache-security/wikis/AngularJS.wiki
https://expressjs.com/en/advanced/security-updates.html
https://web.archive.org/web/20160518123231/http://blog.fortinet.com/post/widespread-mongodb-denial-of-service-vulnerability-discovered