ช่องโหว่ในแพ็คเกจ pac-resolver NPM ที่มีการดาวน์โหลด 3 ล้านครั้งต่อสัปดาห์

แพ็คเกจ pac-resolver NPM ซึ่งมีการดาวน์โหลดมากกว่า 3 ล้านครั้งต่อสัปดาห์ มีช่องโหว่ (CVE-2021-23406) ที่อนุญาตให้เรียกใช้โค้ด JavaScript ในบริบทของแอปพลิเคชันเมื่อส่งคำขอ HTTP จากโครงการ Node.js ที่ รองรับฟังก์ชั่นการกำหนดค่าอัตโนมัติของพร็อกซีเซิร์ฟเวอร์

แพ็คเกจ pac-resolver แยกวิเคราะห์ไฟล์ PAC ที่มีสคริปต์การกำหนดค่าพร็อกซีอัตโนมัติ ไฟล์ PAC มีโค้ด JavaScript ปกติพร้อมฟังก์ชัน FindProxyForURL ที่กำหนดตรรกะในการเลือกพร็อกซีโดยขึ้นอยู่กับโฮสต์และ URL ที่ร้องขอ สาระสำคัญของช่องโหว่คือการเรียกใช้โค้ด JavaScript นี้ใน pac-resolver โดยจะใช้ VM API ที่ให้ไว้ใน Node.js ซึ่งช่วยให้คุณสามารถเรียกใช้โค้ด JavaScript ในบริบทอื่นของกลไก V8

API ที่ระบุได้รับการทำเครื่องหมายไว้อย่างชัดเจนในเอกสารประกอบว่าไม่ได้มีไว้สำหรับการเรียกใช้โค้ดที่ไม่น่าเชื่อถือ เนื่องจากไม่ได้ให้การแยกโค้ดที่กำลังรันโดยสมบูรณ์ และอนุญาตให้เข้าถึงบริบทดั้งเดิมได้ ปัญหานี้ได้รับการแก้ไขแล้วใน pac-resolver 5.0.0 ซึ่งได้รับการย้ายไปใช้ไลบรารี vm2 ซึ่งให้การแยกระดับที่สูงกว่าซึ่งเหมาะสำหรับการเรียกใช้โค้ดที่ไม่น่าเชื่อถือ

ช่องโหว่ในแพ็คเกจ pac-resolver NPM ที่มีการดาวน์โหลด 3 ล้านครั้งต่อสัปดาห์

เมื่อใช้ pac-resolver เวอร์ชันที่มีช่องโหว่ ผู้โจมตีโดยการส่งไฟล์ PAC ที่ออกแบบมาเป็นพิเศษสามารถบรรลุการเรียกใช้โค้ด JavaScript ของเขาในบริบทของโค้ดของโปรเจ็กต์ที่ใช้ Node.js หากโปรเจ็กต์นี้ใช้ไลบรารีที่มีการขึ้นต่อกัน ด้วย pac-resolver ไลบรารีที่มีปัญหาที่ได้รับความนิยมมากที่สุดคือ Proxy-Agent ซึ่งอยู่ในรายการที่ต้องพึ่งพาโปรเจ็กต์ 360 รายการ รวมถึง urllib, aws-cdk, mailgun.js และ firebase-tools รวมมากกว่าสามล้านดาวน์โหลดต่อสัปดาห์

หากแอปพลิเคชันที่มีการพึ่งพา pac-resolver โหลดไฟล์ PAC ที่ได้รับจากระบบที่รองรับโปรโตคอลการกำหนดค่าอัตโนมัติของพร็อกซี WPAD ผู้โจมตีที่สามารถเข้าถึงเครือข่ายท้องถิ่นจะสามารถใช้การกระจายการตั้งค่าพร็อกซีผ่าน DHCP เพื่อแทรกไฟล์ PAC ที่เป็นอันตรายได้

ที่มา: opennet.ru

เพิ่มความคิดเห็น