ช่องโหว่ในแอปยอดนิยมบน macOS อย่าง “Cursor” เปิดช่องให้มัลแวร์หลบเลี่ยงการป้องกันความเป็นส่วนตัว และเปิดเผยข้อมูลผู้ใช้

พบช่องโหว่ด้านความปลอดภัยระดับ Critical ใน Cursor ซึ่งเป็นเครื่องมือแก้ไขโค้ดที่ขับเคลื่อนด้วย AI ที่กำลังได้รับความนิยมบน macOS โดยช่องโหว่นี้ทำให้มัลแวร์สามารถหลบเลี่ยงระบบป้องกันความเป็นส่วนตัวของ Apple และเข้าถึงข้อมูลที่มีความสำคัญของผู้ใช้งานได้ โดยไม่ได้รับอนุญาตอย่างถูกต้อง

ช่องโหว่นี้เกิดจากการกำหนดค่าที่ผิดพลาดในเฟรมเวิร์ก Electron ของแอปพลิเคชัน โดยเฉพาะการเปิดใช้งาน RunAsNode fuse ซึ่งเป็นคุณสมบัติที่ช่วยให้สามารถรันโค้ดได้ตามต้องการด้วยสิทธิ์ของแอปที่ได้รับอนุญาตไว้แล้ว

ช่องโหว่นี้ส่งผลกระทบอย่างร้ายแรงต่อระบบ Transparency, Consent และ Control (TCC) ของ Apple ที่นำมาใช้เพื่อปกป้องความเป็นส่วนตัวของผู้ใช้งานบนระบบ macOS

TCC ทำหน้าที่เป็นกลไกควบคุมหลักที่ควบคุมการเข้าถึงแอปพลิเคชันไปยังทรัพยากรที่มีความสำคัญ รวมถึงไฟล์ในไดเร็กทอรีที่ได้รับการป้องกัน เช่น Documents, Downloads และ Desktop folders ตลอดจน components ของฮาร์ดแวร์ เช่น กล้อง และไมโครโฟน

ภายใต้สถานการณ์ปกติ แอปพลิเคชันจะต้องขออนุญาตจากผู้ใช้ผ่านหน้าต่างแจ้งเตือนของระบบ ก่อนที่จะสามารถเข้าถึงทรัพยากรที่ได้รับการปกป้องเหล่านี้ได้

นักวิจัยด้านความปลอดภัยจาก Afine พบช่องโหว่นี้ระหว่างการศึกษาวิจัยอย่างต่อเนื่องเกี่ยวกับ เทคนิค TCC bypass ที่ส่งผลกระทบต่อแอปพลิเคชัน macOS ของบริษัทอื่น

นักวิจัยระบุว่า แม้จะเปิดเผยข้อมูลไปยังทีมพัฒนาของ Cursor แล้ว แต่ช่องโหว่ดังกล่าวยังไม่ได้รับการแก้ไข โดยทีมพัฒนาให้เหตุผลว่า ปัญหานี้อยู่นอกเหนือจากขอบเขตภัยคุกคามที่พวกเขาพิจารณาไว้ และยังไม่มีแผนในการแก้ไข

การตอบสนองโดยการเพิกเฉยนี้ ทำให้นักวิจัยตัดสินใจเปิดเผยช่องโหว่ต่อสาธารณะ เพื่อให้ผู้ใช้สามารถตัดสินใจด้านความปลอดภัยเกี่ยวกับการใช้งานแอปพลิเคชันต่อไป

ผลกระทบของช่องโหว่นี้ขยายออกไปไกลเกินกว่าแค่การเข้าถึงข้อมูล เนื่องจากช่องโหว่นี้ส่งผลกระทบต่อระบบรักษาความปลอดภัยพื้นฐานของ macOS ด้วย

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

รูปแบบการโจมตีมีได้ตั้งแต่การโจมตีแบบเงียบ ๆ ที่ไม่ต้องการการโต้ตอบจากผู้ใช้ ไปจนถึงเทคนิค Social Engineering ที่มีความซับซ้อน เพื่ออำพราง permission requests ที่เป็นอันตรายให้เป็นฟังก์ชันแอปพลิเคชันที่ดูถูกต้องตามปกติ

สิ่งที่ทำให้ช่องโหว่นี้น่ากังวลเป็นพิเศษคือ ความนิยมที่เพิ่มขึ้นของ Cursor ในกลุ่มนักพัฒนา และการที่แอปนี้ผสานเข้ากับกระบวนการพัฒนาซอฟต์แวร์ที่ขับเคลื่อนด้วย AI ซึ่งทำให้แอปกลายเป็นเป้าหมายที่น่าสนใจสำหรับผู้โจมตีที่ต้องการแทรกโค้ดอันตรายเข้าไปใน software projects

กลไกทางเทคนิคในการโจมตี

ช่องโหว่นี้เกิดจากการกำหนดค่าของ Cursor ให้เป็นแอปพลิเคชัน Electron พร้อมเปิดใช้งานคุณสมบัติที่เรียกว่า RunAsNode fuse ซึ่งเป็นการตั้งค่าที่อนุญาตให้เรียกใช้แอปพลิเคชันเป็น Node.js process

จากการวิเคราะห์ด้านความปลอดภัยพบว่า การกำหนดค่านี้สามารถตรวจสอบได้โดยใช้คำสั่ง npx @electron/fuses read --app "/Applications/Cursor.app/Contents/MacOS/Cursor" ผลลัพธ์จะแสดงว่า RunAsNode is Enabled อยู่ในค่า fuse ของแอปพลิเคชัน

ผู้โจมตีสามารถใช้ประโยชน์จากการกำหนดค่าที่ไม่ถูกต้องนี้ได้โดยการกำหนดค่า Launch Agent ที่เป็นอันตราย ซึ่งใช้ประโยชน์จาก ELECTRON_RUN_AS_NODE environment variable

การโจมตีทั่วไปจะเกี่ยวข้องกับการวางไฟล์ .plist ที่ออกแบบมาเป็นพิเศษลงในไดเรกทอรี ~/Library/LaunchAgents/ ของผู้ใช้ ซึ่งจะเรียกใช้โค้ด JavaScript ที่ต้องการผ่านไบนารีของ Cursor

ตัวอย่างเช่น มัลแวร์สามารถใช้แนวทางต่อไปนี้เพื่อเข้าถึงโฟลเดอร์ Documents ที่ได้รับการป้องกัน:

โดย Launch Agent จะเรียกใช้งานคำสั่ง /Applications/Cursor.app/Contents/MacOS/Cursor ตามด้วย -e ตามด้วย JavaScript ที่เป็นอันตราย เช่น require('child_process').execSync('ls -la $HOME/Documents > /tmp/Documents.txt 2>&1')

เทคนิคนี้จะเปลี่ยน Cursor ให้กลายเป็นพร็อกซีสำหรับปฏิบัติการอันตรายโดยไม่ตั้งใจ เนื่องจากระบบ macOS จะมองว่า การดำเนินการทั้งหมดมีต้นทางมาจากแอปพลิเคชันที่ถูกต้องตามปกติ ไม่ใช่จากมัลแวร์ภายนอก

การใช้ช่องโหว่นี้สามารถเกิดขึ้นได้ใน 2 สถานการณ์ คือ vanilla attack ที่ไม่ต้องการการโต้ตอบจากผู้ใช้ เมื่อ Cursor มีสิทธิ์ TCC อยู่แล้ว และการโจมตีแบบ spoofing ที่แสดง permission requests ปลอมที่ดูเหมือนว่ามาจาก Cursor เอง ซึ่งจะเพิ่มโอกาสในการอนุมัติจากผู้ใช้

ที่มา : cybersecuritynews