พบช่องโหว่ในคอมไพเลอร์จำนวนมากที่อนุญาตให้คุณซ่อนโค้ดที่เป็นอันตราย

ผู้เชี่ยวชาญจากมหาวิทยาลัยเคมบริดจ์ได้เผยแพร่ข้อมูลเกี่ยวกับจุดอ่อนที่เป็นอันตราย (CVE-2021-42574) ซึ่งส่งผลกระทบเกือบทั้งหมดคอมไพเลอร์ซอร์สโค้ดที่ทันสมัย บทความที่มาของ Trojan Source อธิบายถึงการโจมตีที่ร้ายกาจซึ่งช่วยให้แฮกเกอร์สามารถซ่อนโค้ดที่เป็นอันตรายในซอร์สโค้ดของโปรแกรมต่างๆ

การโจมตีขึ้นอยู่กับวิธีที่คอมไพเลอร์จัดการกับตัวระบุที่ไม่ซ้ํากันที่ใช้ในการพิจารณาว่าข้อความถูกวางแนวจากซ้ายไปขวาหรือขวาไปซ้ายจุดอ่อนอยู่ในอัลกอริทึม Unicode Bidi ซึ่งช่วยให้คุณใช้คําที่เขียนจากขวาไปซ้ายและซ้ายไปขวาด้วยกันด้วยอัลกอริทึมนี้ทําให้สามารถรวมคําภาษาอาหรับและภาษาอังกฤษเข้าด้วยกันได้อ่านข้อความที่เขียนจากขวาไปซ้ายซ้ายไปขวาและในทางกลับกัน

ในบางกรณีความสามารถของอัลกอริทึมUnicode Bidi ไม่เพียงพอที่จะเปลี่ยนวิธีการแสดงคำเหล่านี้ และใช้อักขระควบคุมพิเศษในกรณีเช่นนี้ อย่างไรก็ตาม หากบรรทัดเดียวกันรวมคำที่มีทิศทางของข้อความต่างกัน การใช้อักขระควบคุมเหล่านี้ คุณจะสามารถเปลี่ยนทิศทางที่คอมไพลเลอร์อ่านข้อความนั้นได้ และทำให้บรรทัดที่ดูเหมือนความคิดเห็นทำหน้าที่เหมือนโค้ดที่ปฏิบัติการได้


</ img>

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

เมื่อดูและวิเคราะห์ซอร์สโค้ดดังกล่าวโปรแกรมเมอร์จะเห็นโค้ดพร้อมความคิดเห็นที่ไม่ก่อให้เกิดความสงสัย แต่คอมไพเลอร์หรือล่ามจะกลับลำดับตรรกะของสัญลักษณ์ และความคิดเห็นที่ไร้เดียงสาจะกลายเป็นโค้ดเพิ่มเติมที่แทรกเข้าไปในโปรแกรม เกิดข้อผิดพลาดในคอมไพเลอร์เกือบทั้งหมด &#8211; สำหรับภาษาการเขียนโปรแกรม C, C++ (gcc และ clang), C#, JavaScript (Node.js), Java (OpenJDK 16), Rust, Go และ Python; ในโปรแกรมแก้ไขโค้ดยอดนิยมที่หลากหลาย รวมถึง VS Code, Emacs, Atom และอินเทอร์เฟซการดูซอร์สโค้ดใน GitHub, Gitlab, BitBucket และผลิตภัณฑ์ Atlassian ทั้งหมด

ที่มา: โทรจันซอร์ส, zdnet

</ p>