มัลแวร์ GlassWorm กลับมาระบาดอีกครั้งบน OpenVSX โดยมาพร้อมกับ VSCode extensions ใหม่ 3 ตัว

แคมเปญมัลแวร์ GlassWorm ที่ส่งผลกระทบต่อมาร์เก็ตเพลส OpenVSX และ Visual Studio Code เมื่อเดือนที่แล้ว ได้กลับมาอีกครั้ง โดยมาพร้อมกับ VSCode extensions ใหม่ 3 ตัว ที่มียอดดาวน์โหลดไปแล้วกว่า 10,000 ครั้ง

GlassWorm เป็นแคมเปญ และมัลแวร์ที่ใช้การโจมตีจากธุรกรรมบน Solana เพื่อดึงข้อมูล payload ที่มุ่งเป้าขโมยข้อมูล account credentials ของ GitHub, NPM และ OpenVSX รวมถึงข้อมูล cryptocurrency wallet จาก extensions 49 รายการ

มัลแวร์ตัวนี้ใช้ Unicode ที่มองไม่เห็น ซึ่งแสดงผลเป็นช่องว่าง แต่จะทำงานเป็นโค้ด JavaScript เพื่อเอื้อต่อการกระทำที่เป็นอันตราย

มัลแวร์ปรากฏตัวครั้งแรกผ่าน extensions 12 รายการบนมาร์เก็ตเพลส VS Code ของ Microsoft และ OpenVSX ซึ่งถูกดาวน์โหลดไป 35,800 ครั้ง อย่างไรก็ตาม เชื่อกันว่าจำนวนการดาวน์โหลดนั้นถูกปั่นตัวเลขโดยผู้โจมตี ทำให้ไม่ทราบผลกระทบที่แท้จริงทั้งหมดของแคมเปญนี้

เพื่อตอบสนองต่อการโจมตีครั้งนี้ OpenVSX ได้ทำการ rotated access tokens สำหรับบัญชีที่ถูก GlassWorm โจมตีเข้าไป (โดยไม่เปิดเผยจำนวน) พร้อมทั้งปรับปรุงระบบความปลอดภัย และได้ปิดเคสเหตุการณ์ดังกล่าวแล้ว

GlassWorm กลับมาอีกครั้ง

จากข้อมูลของ Koi Security ที่ติดตามแคมเปญนี้มาโดยตลอด พบว่าผู้โจมตีกลับมามุ่งเป้าที่ OpenVSX อีกครั้ง โดยใช้โครงสร้างพื้นฐานเดิม แต่มีการอัปเดต endpoints สำหรับ command-and-control (C2) และการทำธุรกรรมบนเครือข่าย Solana

OpenVSX extensions 3 รายการทีมี GlassWorm payload ได้แก่ :

ai-driven-dev.

Project Zero แจ้งเตือนช่องโหว่ใน GitHub Actions อาจนำมาใช้เพื่อทำการโจมตีแบบ Command Injection ได้

Felix Wilhelm จาก Google Project Zero เปิดเผยช่องโหว่ใหม่รหัส CVE-2020-15228 ใน Github Actions ที่ได้มีการแจ้งเตือนไปตั้งแต่ปลายเดือนกรกฎาคม โดยช่องโหว่ดังกล่าวเกิดจากการคำสั่งในกลุ่ม workflow commands ที่ทำให้ Actions runner สามารถรันคำสั่ง shell ใน runner machine ได้ ซึ่งทำให้ช่องโหว่นี้มีความเสี่ยงที่จะถูกโจมตีเพื่อทำ command injection

ช่องโหว่จริงๆ อยู่ที่วิธีการที่ Action runner ประมวลผล workflow commands โดยปกตินั้นหากต้องการเรียกใช้ workflow command เราจะทำการเรียกใช้โดยใช้คำสั่ง echo ของ Linux จากนั้นให้ใส่ workflow commands ที่ครอบด้วย marker ลงไป โดย marker แตกต่างกันตามเวอร์ชันของ Action runner เช่นหากเป็นรุ่นแรกนั้น marker คือตัวอักษร ## และสำหรับรุ่นที่ 2 จะมี marker คือ :: ตามตัวอย่างเช่น echo '::set-output name=SELECTED_COLOR::green'

Action runner จะมองหา workflow commands จาก STDOUT ของคำสั่ง echo หรือคำสั่งใดๆ ก็ตามและนำข้อมูลทั้งหมดไปรัน Felix ระบุว่ากระบวนการตรงนี้มีโอกาสที่สูงมากที่จะถูกทำ command injection หากภายใน echo นั้นมี untrusted code อยู่ หรือมีการรับข้อมูลจากผู้ใช้มารัน ผู้ไม่ประสงค์ดีสามารถทำการ inject ข้อมูลในส่วนนี้ จากนั้นใช้คำสั่งอย่าง set-env หรือ add-path เพื่อแก้ไข environment varible ของ runner machine ตอน workflow กำลังทำงานอยู่ได้

การจะโจมตีช่องโหว่ได้นั้นขึ้นอยู่กับว่ามีการรับ untrusted input เข้าไปประมวลผลใน workflow ในขั้นตอนใด ตัวอย่างซึ่ง Felix ยกมานั้นคือโครงการหนึ่งของ vscode ซึ่งนำ GitHub Actions มาใช้ในการกระจาย Issues ไปยังโครงการอื่นโดยมีการรับข้อมูลจาก Issues มา ผู้โจมตีสามารถทำการ inject คำสั่งผ่านการสร้าง Issues เพื่อโจมตีช่องโหว่นี้ได้

GitHub ใช้เวลาเกือบ 3 เดือนในการแก้ไขปัญหานี้แต่กลับไม่สามาถรปิดการใช้งานหรือแก้ไขช่องโหว่โดยตรงได้ GitHub จึงได้มีการออกคำแนะนำในการใช้งานเพื่อลดความเสี่ยงแทนที่ https://github.