
พบช่องโหว่ระดับ Critical ในไลบรารี expr-eval JavaScript ซึ่งเป็นที่นิยม และมียอดดาวน์โหลดกว่า 800,000 ครั้งต่อสัปดาห์บน NPM สามารถถูกใช้โจมตีเพื่อเรียกใช้โค้ดที่เป็นอันตรายจากระยะไกล ผ่าน input ที่ถูกสร้างขึ้นมาเพื่อโจมตีโดยเฉพาะได้
ช่องโหว่ดังกล่าวถูกค้นพบโดย Jangwoo Choe นักวิจัยด้านความปลอดภัย โดยมีหมายเลข CVE-2025-12735 ตามข้อมูลของ CISA ระบุว่า ระดับความรุนแรงของช่องโหว่ดังกล่าวอยู่ในระดับ Critical โดยมีคะแนน 9.8
expr-eval เดิมทีถูกพัฒนาโดย Matthew Crumley เป็นไลบรารีขนาดเล็กสำหรับ JavaScript expression parser และ evaluator มักใช้ใน projects ที่ต้องการ parsing และ computation ที่ผู้ใช้ป้อนเข้ามา ในขณะที่โปรแกรมกำลังทำงาน โดยเน้นเรื่องความปลอดภัย
ตัวอย่างการใช้งาน ได้แก่ เครื่องคิดเลขออนไลน์, ชุดโปรแกรมเพื่อการศึกษา, เครื่องมือ simulation, เครื่องมือทางการเงิน และล่าสุดคือ AI และระบบ natural language processing (NLP) ที่ทำหน้าที่ parse mathematical expressions จากข้อความที่ป้อนเข้ามา
ในคำแนะนำที่ออกมาช่วงสุดสัปดาห์ CERT Coordination Center (CERT-CC) ของสถาบันวิศวกรรมซอฟต์แวร์ (SEI) แห่งมหาวิทยาลัย Carnegie Mellon ระบุว่า ช่องโหว่ดังกล่าวเกิดจากความผิดพลาดของไลบรารีในการตรวจสอบ variables/context object ที่ถูกส่งเข้าไปยังฟังก์ชัน Parser.evaluate() ซึ่งอาจทำให้ผู้โจมตีสามารถส่ง objects ฟังก์ชันที่เป็นอันตรายเข้ามา เพื่อให้ตัว parser เรียกใช้งานในระหว่างการประเมินผลได้
CERT-CC ระบุว่า "ช่องโหว่ดังกล่าวทำให้ผู้ไม่หวังดีสามารถควบคุมการทำงานของซอฟต์แวร์ได้อย่างสมบูรณ์ หรือเปิดเผยข้อมูลทั้งหมดบนระบบที่ได้รับผลกระทบ"
CVE-2025-12735 ส่งผลกระทบต่อทั้งไลบรารี expr-eval เวอร์ชัน original ซึ่งเวอร์ชันที่มีความเสถียรล่าสุดถูกปล่อยออกมาเมื่อ 6 ปีที่แล้ว และยังส่งผลกระทบถึง expr-eval-fork ซึ่งเป็นเวอร์ชัน fork ที่ยังคงมีการดูแลรักษาอย่างต่อเนื่องในปัจจุบัน โดยมียอดดาวน์โหลดมากกว่า 80,000 ครั้งต่อสัปดาห์บน NPM package registry สำหรับ Node.js
จากข้อมูลของ npmjs.com ไลบรารีดังกล่าวถูกนำไปใช้ใน projects มากกว่า 250 รายการ แพตช์อัปเดตเพื่อแก้ไขช่องโหว่สำหรับ CVE-2025-12735 มีอยู่ใน expr-eval-fork เวอร์ชัน 3.0.0 แล้ว โดยมีคำแนะนำให้ projects ที่ได้รับผลกระทบเปลี่ยนไปใช้เวอร์ชันนี้โดยเร็วที่สุด
แพตช์ดังกล่าวได้บังคับใช้ "allowlist" ของฟังก์ชันที่ปลอดภัยสำหรับการประเมินผล, เพิ่มระบบลงทะเบียนสำหรับฟังก์ชันที่ผู้ใช้กำหนดเอง และปรับปรุงให้ครอบคลุมสำหรับการทดสอบข้อจำกัดเหล่านี้
สำหรับผู้ใช้งาน expr-eval (เวอร์ชันเดิม) แม้ว่าจะมี pull request ที่เสนอการแก้ไขนี้แล้ว แต่เนื่องจากผู้ดูแล project ขาดการตอบสนอง จึงยังไม่ทราบแน่ชัดว่าจะมีการ merge การแก้ไขนี้เข้าสู่ release ใหม่เมื่อใด
นักพัฒนาซอฟต์แวร์ที่ได้รับผลกระทบจึงได้รับคำแนะนำให้ migrate ไปใช้ expr-eval-fork v3.0.0 โดยทันที และทำการเผยแพร่ไลบรารีของตนเองใหม่ เพื่อให้ผู้ใช้งานได้รับการแก้ไขดังกล่าว
ที่มา : bleepingcomputer

You must be logged in to post a comment.