พบช่องโหว่ระดับ Critical ใน Protobuf Library ที่อาจทำให้สามารถเรียกใช้โค้ด JavaScript ได้

มีการเผยแพร่ Proof-of-Concept (PoC) สำหรับใช้ในการโจมตีช่องโหว่ประเภท Remote Code Execution (RCE) ซึ่งมีความรุนแรงระดับ Critical ใน protobuf.js ซึ่งเป็นเครื่องมือหลักในการจัดการ Protocol Buffers ของ Google ในรูปแบบ JavaScript

เครื่องมือดังกล่าวได้รับความนิยมสูงใน Node Package Manager (npm) โดยมียอดดาวน์โหลดเฉลี่ยเกือบ 50 ล้านครั้งต่อสัปดาห์ โดยเป็นหัวใจหลักของการใช้งานเพื่อการสื่อสารระหว่างบริการ ในแอปพลิเคชันแบบเรียลไทม์ และเพื่อการจัดเก็บข้อมูลที่เป็น structured data อย่างมีประสิทธิภาพใน databases และสภาพแวดล้อมคลาวด์

รายงานล่าสุดจาก Endor Labs เมื่อวันศุกร์แสดงให้เห็นว่า ช่องโหว่ดังกล่าวมีต้นเหตุมาจากการเขียนโปรแกรมเพื่อสร้างโค้ดแบบไดนามิกที่ไม่รัดกุม ปัจจุบันช่องโหว่นี้ยังไม่มีหมายเลข CVE อย่างเป็นทางการ แต่ถูกระบุในระบบติดตามด้วยหมายเลข GHSA-xq3m-2v4x-88gg ของทาง GitHub

Endor Labs อธิบายว่า Library จะทำการสร้างฟังก์ชัน JavaScript จาก protobuf schemas ด้วยการต่อสตริงเข้าด้วยกัน และเรียกใช้ผ่าน Function() constructor แต่กลับไม่มีการตรวจสอบความถูกต้องของตัวแปรที่ดึงมาจาก Schema เช่น message names

ช่องโหว่นี้ทำให้ผู้โจมตีสามารถส่ง malicious schema เพื่อแทรกคำสั่งแปลกปลอมลงในฟังก์ชันที่ระบบสร้างขึ้นอัตโนมัติ และคำสั่งนั้นจะทำงานทันทีเมื่อแอปพลิเคชันมีการเรียกใช้ Schema ดังกล่าวเพื่อประมวลผลข้อมูล

สถานการณ์นี้ส่งผลให้แฮ็กเกอร์สามารถยึดครองเซิร์ฟเวอร์, เข้าถึงข้อมูลสำคัญ, รหัสผ่าน และระบบภายในได้ รวมถึงยังสามารถโจมตีต่อไปยังส่วนอื่น ๆ ในเครือข่ายได้อีกด้วย

ความเสี่ยงดังกล่าวยังครอบคลุมถึงเครื่องคอมพิวเตอร์ของเหล่านักพัฒนา หากมีการรัน Schema ที่ไม่ปลอดภัยเพื่อทดสอบข้อมูลภายในเครื่อง

โดย Endor Labs แนะนำให้รีบอัปเกรดเป็น 8.0.1 และ 7.5.5 ทันที เนื่องจากช่องโหว่นี้ส่งผลกระทบต่อ protobuf.js เวอร์ชัน 8.0.0/7.5.4 และต่ำกว่าทั้งหมด

patch ใหม่จะทำการ sanitize ชื่อประเภทข้อมูลโดยการตัดอักขระที่ไม่ใช่ alphanumeric ออก เพื่อป้องกันไม่ให้ผู้โจมตีทำการแทรกคำสั่งปิดฟังก์ชันได้ แต่ Endor ให้ความเห็นว่าการแก้ปัญหาถาวรคือการหยุดใช้ Function constructor กับข้อมูลที่มาจากภายนอก

Endor Labs แจ้งว่า การโจมตีทำได้ง่ายมากตาม PoC ที่เผยแพร่ แม้ว่าปัจจุบันจะยังไม่มีรายงานความเสียหายที่เกิดขึ้นจริงก็ตาม

ช่องโหว่นี้ถูกรายงานโดย Cristian Staicu เมื่อวันที่ 2 มีนาคม และมีการปล่อย patch บน GitHub วันที่ 11 มีนาคม ส่วนการอัปเดตบน npm นั้นพร้อมใช้งานในช่วงกลางเดือนเมษายนที่ผ่านมา

นอกจากการอัปเกรดเวอร์ชันแล้ว Endor Labs ยังเน้นย้ำให้ผู้ดูแลระบบตรวจสอบ transitive dependencies ระมัดระวังการโหลด static จากภายนอก และควรใช้ static schemas ในระบบจริง

ที่มาBleepingcomputer