Full Stack Blues: สํารวจช่องโหว่ใน MEAN Stack
การพัฒนาฟูลสแต็กเป็นที่นิยมในทุกวันนี้และด้วยเหตุผลที่ดี: นักพัฒนาที่มีทั้งทักษะการพัฒนาเว็บส่วนหน้าและความสามารถในการเขียนโค้ดแบ็คเอนด์/เซิร์ฟเวอร์ให้มูลค่ามากขึ้นแก่องค์กรของตนอย่างชัดเจน ความสามารถในการสํารวจสแต็กทั้งหมดอย่างมีประสิทธิภาพยังทําให้การโต้ตอบและร่วมมือกับการดําเนินงานและการรักษาความปลอดภัยเป็นเรื่องง่ายขึ้น ซึ่งเป็นหลักการสําคัญของวัฒนธรรม DevOps
ที่กล่าวว่าแนวทางแบบฟูลสแต็กแม้จะมีข้อดี แต่นักพัฒนาต้องพิจารณาที่สําคัญซึ่งไม่เคยมีมาก่อนโดยเฉพาะอย่างยิ่งเมื่อพูดถึงความปลอดภัยและการทดสอบ ตัวอย่างเช่น ในอดีต DBA หรือผู้ดูแลระบบเฉพาะอาจได้รับมอบหมายให้ตรวจสอบความปลอดภัยของฐานข้อมูลหรือเสริมความแข็งแกร่งให้กับระบบพื้นฐาน สําหรับนักพัฒนาฟูลสแตกงานเหล่านี้เป็นเกมเปิดจากนั้นการเปลี่ยนแปลงโดยรวมในความคิดไปสู่ความปลอดภัยเป็นสิ่งจําเป็นสําหรับการพัฒนาและส่งมอบซอฟต์แวร์อย่างปลอดภัยอย่างต่อเนื่อง
การเปิดรับอย่างลึกซึ้งในทุกชั้นของสแต็กทําให้นักพัฒนาฟูลสแต็กอยู่ในเบาะหน้าเพื่อรักษาเสถียรภาพการรักษาความปลอดภัยของแอปพลิเคชัน ดังนั้นจึงเป็นเรื่องสําคัญที่จะต้องเข้าใจความเสี่ยงและผลกระทบด้านความปลอดภัยของเทคโนโลยีที่เป็นส่วนประกอบแต่ละอย่างอย่างถ่องแท้ ตัวอย่างตัวอย่าง MEAN stack เป็นเฟรมเวิร์กฟูลสแต็กยอดนิยมที่คล่องตัวเพื่อประสิทธิภาพ: MongoDB, Express.JS, Angular.JS และ Node.JS เนื่องจากทุกเลเยอร์ของสแต็กเขียนด้วย JavaScript นักพัฒนาจึงต้องเขียนโค้ดแอปพลิเคชันเพียงด้านหน้าไปด้านหลังไคลเอ็นต์ไปยังเซิร์ฟเวอร์ใน JavaScript และเนื่องจากนักพัฒนาเหล่านี้กําลังอยู่ในเบ็ดในการส่งมอบเว็บแอปพลิเคชันที่ปลอดภัยพวกเขาจึงต้องแก้ไขช่องโหว่และตรวจสอบทุกชั้นของแอปพลิเคชันเพื่อความปลอดภัย แต่แต่ละชั้นมีความเสี่ยงต่อการถูกบุกรุกแค่ไหน? ลองดูคร่าวๆ ภายในสแต็ก MEAN เพื่อค้นหา
มงโกดีบี
MongoDB เป็นฐานข้อมูล NoSQL ที่เป็นมิตรกับ JavaScript และมุ่งเน้นเอกสาร ซึ่งแข่งขันกับ Cassandra และ HBase โดยทั่วไปสําหรับวัตถุประสงค์ส่วนใหญ่ MongoDB สามารถใช้ในลักษณะเดียวกับ MySQL ได้เป็นส่วนใหญ่ ตรวจสอบการเปรียบเทียบ MongoDB กับ MySQL ของเราสําหรับการเปรียบเทียบเทคโนโลยีทั้งสองอย่างเต็มรูปแบบ
ความเข้าใจผิดที่พบบ่อยคือ MongoDB มีภูมิคุ้มกันต่อการโจมตีประเภทการแทรก SQL แม้ว่าจะเป็นความจริงที่ MongoDB จะไม่อ่อนไหวต่อการละเมิดภาษา SQL แต่เอกสาร JSON ของมันยังคงสามารถเปลี่ยนแปลงได้เพื่อให้ได้ผลลัพธ์ที่เป็นอันตรายเช่นเดียวกัน นอกจากนี้ MongoDB ยังมีช่องโหว่ของตัวเอง เช่น ช่องโหว่ที่เพิ่งค้นพบอย่างกว้างขวางทําให้แฮกเกอร์สามารถทําให้แอปพลิเคชันฐานข้อมูลล่มจากระยะไกลได้ นอกจากนี้ การอ่านฐานข้อมูล Common Vulnerabilities and Exposures (CVE) ยังเผยให้เห็นโฮสต์ของการเปิดเผยความปลอดภัยและช่องโหว่สําหรับ MongoDB
Express.JS
Express.JS เป็นเฟรมเวิร์กเว็บและแอปพลิเคชันมือถือฝั่งเซิร์ฟเวอร์สําหรับ Node.JS คล้ายกับสิ่งที่ Ruby-on-Rails หรือ Sinatra ใช้กับภาษา Ruby เฟรมเวิร์กนี้สร้างขึ้นจาก Node.JS เพื่อจัดหาส่วนประกอบมาตรฐานเพื่อปรับปรุงการพัฒนา และในความเป็นจริงเป็นเฟรมเวิร์ก Node.js ที่ใช้กันอย่างแพร่หลายมากที่สุดในปัจจุบัน น่าเสียดายที่เฟรมเวิร์กมีความเสี่ยงต่อการโจมตีแบบแทรกและข้ามไซต์ต่างๆ และอ่อนไหวต่อช่องโหว่พื้นฐานของ Node.js ทั้งหมด ไซต์ Express.JS รักษารายการช่องโหว่และการแก้ไขที่อัปเดตต่อเวอร์ชัน
แองเกิลเจส
พัฒนาและบํารุงรักษาโดย Google Angular.js เป็นเฟรมเวิร์ก MVC ส่วนหน้าที่ช่วยให้สามารถพัฒนาฝั่งไคลเอ็นต์แบบแยกส่วนด้วยโค้ดน้อยที่สุด เฟรมเวิร์กนี้มีความเสี่ยงต่อการโจมตีสคริปต์ข้ามไซต์ต่างๆ รายการช่องโหว่ Angular.js ทั้งหมดมีอยู่ที่หน้าแรกของโครงการของ Mustache Security บน Google Code
โนด.เจส
คําถามที่สําคัญและยากกว่าไม่ใช่ว่าทําไม แต่เป็นวิธี นั่นคือ บริษัท ต่างๆ ไม่เพียงแต่อยู่รอด แต่ยังเติบโตในภูมิทัศน์ของภัยคุกคามทางดิจิทัลได้อย่างไร
Node.js ช่วยให้สามารถสร้างเว็บแอปพลิเคชันที่มีความสามารถด้านเซิร์ฟเวอร์และเครือข่ายที่กว้างขวาง และเปิดใช้งานการสื่อสารแบบสองทางแบบเรียลไทม์ระหว่างไคลเอนต์และเซิร์ฟเวอร์ จากเอ็นจิ้น V8 Javascript ของ Google Node.js เป็นที่นิยมสําหรับการสร้างเว็บเซิร์ฟเวอร์ HTTP ได้ทันที เป็นองค์ประกอบที่กําหนดของสแต็ก MEAN Node.js ไม่ได้ปราศจากช่องโหว่ของตัวเองไม่เพียง แต่สืบทอดช่องโหว่ที่เกี่ยวข้องกับ JavaScript ทั้งหมด แต่ยังได้รับเวกเตอร์การโจมตีใหม่ในขณะที่ดําเนินการบนฝั่งเซิร์ฟเวอร์ ฐานข้อมูล CVE ยังมีรายการช่องโหว่ Node.JS ที่ครอบคลุม
กล่าวโดยย่อ การพัฒนาแบบฟูลสแตกอาจเป็นศูนย์รวมของ DevOps แต่ก็ยังต้องมีการปฏิบัติตามแนวทางปฏิบัติในการพัฒนาแอปพลิเคชันที่ปลอดภัยอย่างเคร่งครัด สแต็ก MEAN และสแต็กใด ๆ สําหรับเรื่องนั้น ไม่ว่าจะเป็น LAMP หรือ .NET จําเป็นต้องมีการควบคุมที่เหมาะสมเพื่อให้แน่ใจว่ามีการรักษาความปลอดภัยในทุกขั้นตอนของการพัฒนา ด้วยเหตุนี้ UpGuard จึงให้การประเมินช่องโหว่ที่ครอบคลุมและตรวจสอบสําหรับเว็บแอปพลิเคชัน ฐานข้อมูล เซิร์ฟเวอร์ ไม่ว่าจะใช้งานสแต็กใดแพลตฟอร์มของเราก็สามารถสแกนและตรวจสอบทุกเลเยอร์ได้
แหล่ง
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