เครื่องมือ ODGen ใหม่ค้นพบ 180 Zero-Days ในไลบรารี Node.js PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

เครื่องมือ ODGen ใหม่ค้นพบ 180 Zero-Days ใน Node.js Libraries

นักวิจัยจากมหาวิทยาลัยจอห์น ฮอปกินส์ ได้เปิดเผยช่องโหว่ซีโร่เดย์ 180 จุดที่น่าตกใจในไลบรารี Node.js หลายพันแห่ง โดยใช้เครื่องมือวิเคราะห์โค้ดใหม่ที่พวกเขาพัฒนาขึ้นเพื่อจุดประสงค์โดยเฉพาะ เรียกว่า ODGen

ข้อบกพร่องเจ็ดสิบประการเหล่านี้ได้รับตัวระบุช่องโหว่และความเสี่ยงทั่วไป (CVE) ซึ่งรวมถึงข้อบกพร่องในการแทรกคำสั่ง ช่องโหว่การข้ามเส้นทาง ปัญหาการเรียกใช้โค้ดโดยอำเภอใจ และช่องโหว่ของสคริปต์ข้ามไซต์ ซึ่งบางส่วนมีอยู่ในแอปพลิเคชันที่ใช้กันอย่างแพร่หลาย

ในบทความที่เผยแพร่ที่ Usenix Security Symposium เมื่อต้นเดือนนี้ นักวิจัยของ Johns Hopkins — Song Li, Mingqing Kang, Jianwei Hou และ Yinzhi Cao — อธิบายว่า ODGen เป็นทางเลือกที่ดีกว่าสำหรับการวิเคราะห์โค้ดในปัจจุบันและสิ่งที่เรียกว่ากราฟคิวรี่ แนวทางในการค้นหาช่องโหว่ของ Node.js

วิธีการที่ใช้การวิเคราะห์โปรแกรมได้รับการพิสูจน์แล้วว่ามีประโยชน์ในการช่วยตรวจหาช่องโหว่แต่ละประเภท เช่น ข้อบกพร่องในการฉีดโค้ดใน JavaScript แต่ไม่สามารถขยายได้อย่างง่ายดายเพื่อตรวจหาช่องโหว่ทุกประเภทที่อาจปรากฏในแพลตฟอร์ม Node.js นักวิจัยกล่าว ในทำนองเดียวกัน วิธีการวิเคราะห์โค้ดแบบอิงกราฟ — โดยที่โค้ดถูกแสดงเป็นกราฟในตอนแรก จากนั้นจึงสอบถามข้อผิดพลาดในการเขียนโค้ดที่เฉพาะเจาะจง — ทำงานได้ดีในสภาพแวดล้อมเช่น C++ และ PHP อย่างไรก็ตาม วิธีการที่ใช้กราฟเป็นพื้นฐานนั้นไม่ได้มีประสิทธิภาพในการขุดหาช่องโหว่ของ JavaScript เนื่องจากการใช้คุณสมบัติไดนามิกอย่างกว้างขวางของภาษาโปรแกรม

แนวทาง 'นวนิยาย' สำหรับการค้นหาช่องโหว่ของ JavaScript

ดังนั้น นักวิจัยจึงพัฒนาสิ่งที่พวกเขาอธิบายว่าเป็น "นวนิยาย" และวิธีการที่ดีกว่าที่เรียกว่า Object Dependence Graph (ODG) ที่สามารถใช้ในการตรวจหาช่องโหว่ของ Node.js พวกเขาใช้ ODGen เพื่อสร้าง "ODG" สำหรับโปรแกรม Node.js เพื่อตรวจหาช่องโหว่

Cao ผู้ช่วยศาสตราจารย์ด้านวิทยาการคอมพิวเตอร์ที่ Johns Hopkins University และผู้เขียนร่วมของรายงานการวิจัย ใช้การเปรียบเทียบสองสามข้อเพื่ออธิบายการวิเคราะห์โค้ดตามกราฟโดยทั่วไปและกราฟการพึ่งพาตามวัตถุประสงค์ที่เสนอ “ถ้าเราพิจารณาช่องโหว่เป็นรูปแบบพิเศษ เช่น โหนดสีเขียวที่เชื่อมต่อกับโหนดสีแดง และโหนดสีดำ เครื่องมือวิเคราะห์โค้ดแบบกราฟจะแปลงโปรแกรมเป็นกราฟที่มีโหนดและขอบจำนวนมากก่อน” Cao กล่าว . "จากนั้นเครื่องมือจะค้นหารูปแบบดังกล่าวในกราฟเพื่อค้นหาช่องโหว่"

กราฟ Object Dependence Graph ที่นักวิจัยได้เสนอให้ปรับแต่งแนวทางนี้โดยแสดงออบเจกต์ JavaScript เป็นโหนด และเพิ่มคุณสมบัติ รวมถึงการพึ่งพาระหว่างอ็อบเจ็กต์ ซึ่งเจาะจงสำหรับภาษาการเขียนโปรแกรม จากนั้นจึงค้นหาข้อผิดพลาด Cao อธิบายวิธีการทำงานโดยใช้เมล็ดธัญพืชในข้าวหนึ่งกำมือ: หากเมล็ดธัญพืชทั้งหมดมีลักษณะเหมือนกันก่อนที่จะต้ม แต่สมมติว่ามีเฉดสีที่แตกต่างกันสองสีหลังต้ม — อันหนึ่งแสดงถึงเมล็ดพืชที่ดีและเมล็ดเสียอื่นๆ จะมองเห็นและคัดแยกได้ง่ายขึ้น ธัญพืชที่ไม่ดี “การตีความนามธรรมก็เหมือนกับกระบวนการต้มที่เปลี่ยนข้าว นั่นคือโปรแกรมต่างๆ ให้เป็นวัตถุที่มีสีต่างกัน” Cao กล่าว

แมลงหลากหลายชนิด

เพื่อดูว่าวิธีการของพวกเขาใช้การได้หรือไม่ นักวิจัยได้ทดสอบ ODGen กับกลุ่มตัวอย่าง 330 ช่องโหว่ที่รายงานก่อนหน้านี้ในแพ็คเกจ Node.js บนที่เก็บ node package manager (npm) การทดสอบแสดงให้เห็นว่าเครื่องสแกนระบุช่องโหว่ 302 จาก 330 รายการได้อย่างถูกต้อง ด้วยอัตราความแม่นยำที่ค่อนข้างสูง นักวิจัยจึงใช้ ODGen กับแพ็คเกจ Java ประมาณ 300,000 แพ็คเกจใน npm เครื่องสแกนรายงานช่องโหว่ที่อาจเกิดขึ้นทั้งหมด 2,964 รายการในแพ็คเกจ นักวิจัยได้ตรวจสอบ 264 ครั้ง ซึ่งทั้งหมดมีการดาวน์โหลดมากกว่า 1,000 ครั้งต่อสัปดาห์โดยเฉลี่ย และสามารถยืนยันได้ 180 ครั้งว่าเป็นช่องโหว่ที่ถูกต้องตามกฎหมาย สี่สิบสามคนอยู่ที่ระดับแอปพลิเคชัน 122 อยู่ในแพ็คเกจที่นำเข้าโดยแอปพลิเคชันหรือรหัสอื่นและ 15 ที่เหลือมีอยู่ในแพ็คเกจทางอ้อม

ช่องโหว่ที่ยืนยันแล้วจำนวนหนึ่ง (80) รายการซึ่ง ODGen ตรวจพบคือโฟลว์การฉีดคำสั่งที่อนุญาตให้ผู้โจมตีรันโค้ดโดยอำเภอใจที่ระดับระบบปฏิบัติการผ่านแอปพลิเคชันที่มีช่องโหว่ สามสิบเป็นข้อบกพร่องในการข้ามเส้นทาง 24 เปิดใช้งานการปลอมแปลงโค้ดและ 19 เกี่ยวข้องกับประเภทของการโจมตีแบบฉีดคำสั่งที่เรียกว่าต้นแบบมลพิษ

ประทับเวลา:

เพิ่มเติมจาก การอ่านที่มืด