สรุปสั้น
ทีม ThreatLabz ของบริษัท Zscaler เปิดเผยแคมเปญที่พบตั้งแต่กรกฎาคม 2569 ซึ่งใช้ Terraform provider ปลอมชื่อ terraform-provider-awsbeta_v1.0.0 เขียนด้วยภาษา Go แอบอ้างเป็น provider ของ AWS เมื่อ Terraform เริ่มโหลดปลั๊กอินตัวนี้ โค้ดอันตรายที่แทรกไว้จะรันทันทีแต่ provider ยังทำงานตามปกติ ผู้ใช้จึงแทบไม่เห็นความผิดปกติ จากนั้นสคริปต์ Bash จะดึงไฟล์ที่ปลอมเป็นฟอนต์ .woff ซึ่งต่อท้ายด้วยมัลแวร์ที่เข้ารหัสไว้ เลือกตามระบบปฏิบัติการและสถาปัตยกรรมซีพียู ครอบคลุมทั้ง Linux, macOS และ Windows
มัลแวร์ตัวแรกคือ FLATROOF แบ็กดอร์เขียนด้วย Rust ที่ขโมยฐานข้อมูลเบราว์เซอร์ คุกกี้ ประวัติเทอร์มินัล คีย์เชนของระบบ และข้อมูลกระเป๋าคริปโต ส่วนตัวที่สองคือ ROOFDECK แบ็กดอร์ควบคุมระยะไกลที่หาที่อยู่เซิร์ฟเวอร์ C2 จากไฟล์บน Pastebin ซึ่งตรวจลายเซ็น RSA ก่อนเชื่อ และใช้โปรไฟล์บนเครือข่าย Nostr ชี้ไปยังไฟล์ Pastebin ล่าสุด ทำให้ผู้ควบคุมย้ายเซิร์ฟเวอร์ได้โดยไม่ต้องอัปเดตมัลแวร์
Zscaler ประเมินว่าแคมเปญนี้ทับซ้อนกับ TraderTraitor กลุ่มที่รัฐเกาหลีเหนือหนุน (หรือ Jade Sleet, UNC4899, Pressure Chollima, Slow Pisces) ทั้งเป้าหมาย เครื่องมือ และเทคนิค แต่ยังไม่พบโค้ดเฉพาะตัว โครงสร้างพื้นฐานร่วม หรือหลักฐานทางการเข้ารหัสที่พอจะยืนยันได้อย่างมั่นใจ และยังไม่รู้ว่า provider ปลอมไปถึงเครื่องเหยื่อได้อย่างไร
รายละเอียดข่าว
เว็บไซต์ GBHackers รายงานเมื่อวันที่ 9 ตุลาคม 2569 อ้างรายงานของ Zscaler ThreatLabz ที่เผยแพร่เมื่อวันที่ 8 ตุลาคม 2569 เขียนโดยนาย Seongsu Park ว่าผู้โจมตีแทรกแพ็กเกจอันตรายชื่อ awsbeta ลงในโครงของ provider ที่ยังใช้งานได้จริง แล้วเรียกจากฟังก์ชัน main โดยตรง เมื่อ Terraform สั่งรันปลั๊กอิน โค้ดจะตรวจหาไฟล์ session.lock ในไดเรกทอรีชั่วคราวเพื่อไม่ให้รันซ้ำ ดาวน์โหลดสคริปต์ Bash จากโดเมนเลียนแบบ hashicorp-terraform[.]io บันทึกเป็นไฟล์ safari_updater ให้สิทธิ์รัน แล้วสั่งทำงานแยกเป็นโปรเซสอิสระ
Zscaler ระบุว่าเพราะเครื่องนักพัฒนาและระบบ CI/CD เป็นที่ที่ provider ถูกรัน เป้าหมายจึงน่าจะเป็นวิศวกรคลาวด์และนักพัฒนาที่ถือ credential คลาวด์หรือสิทธิ์ซอร์สโค้ด รายงานยังชี้ว่ามัลแวร์ทับซ้อนกับรายงานเหตุ KelpDAO ที่เครื่องนักพัฒนาถูกเจาะก่อนการขโมยเงินผ่านบริดจ์ 292 ล้านดอลลาร์ และสอดคล้องกับการสืบสวนของ SentinelLabs ที่พบเหยื่อเป็นผู้ให้บริการไอทีในอินเดียซึ่งไม่เกี่ยวกับคริปโตเลย (โพสต์ 2026/09/153 ) เทคนิคใช้ Terraform เป็นช่องทางส่งมัลแวร์ของกลุ่มเกาหลีเหนือเคยรายงานไว้ในโพสต์ 2026/09/199 เช่นกัน แต่ครั้งนี้เป็นไบนารี provider ที่ถูกดัดแปลงตรง ๆ และมีรุ่นสำหรับ Windows กับ Linux เพิ่มจากที่เคยเห็นบน macOS
ข้อสังเกตจาก Zscaler คือโค้ด Python ของตัวขโมยข้อมูลบางส่วนมีคอมเมนต์ยาวเกินจำเป็น มีอีโมจิ และตั้งชื่อตัวแปรไม่สม่ำเสมอ ซึ่งชวนให้คิดว่าอาจสร้างด้วย LLM ส่วนช่องทางที่ผู้โจมตีใช้ส่ง provider ปลอมไปถึงเหยื่อยังไม่ได้รับการยืนยัน ขณะที่งานวิจัยก่อนหน้าของ Unit 42 และ SentinelLabs บันทึกการปลอมเป็นผู้สรรหางานและส่งโจทย์เขียนโค้ดอันตรายให้นักพัฒนา

วิธีการโจมตี
ตัวโหลดและไฟล์ฟอนต์ปลอม — สคริปต์ safari_updater ตรวจระบบปฏิบัติการและสถาปัตยกรรม แล้วเลือกไฟล์ที่ตั้งชื่อตามฟอนต์ ได้แก่ NotoSansCJK สำหรับ Linux, HiraginoSans สำหรับ macOS และ MalgunGothic สำหรับ Windows (ซึ่งต้องมีสภาพแวดล้อมเชลล์แบบ Unix บนเครื่อง) แต่ละไฟล์มีเนื้อหาฟอนต์หลอกตา ตามด้วยตัวคั่น @@ENDFONT@@ และไฟล์รันที่เข้ารหัสไว้ ตัวโหลดดึงไฟล์จาก 3 แหล่งเรียงลำดับ คือโฮสต์ dynamic DNS, repo บน GitHub และเว็บบน Vercel แล้วถอด Base64 กับ AES-256-CBC ด้วยเครื่องมือที่มีอยู่ในเครื่อง ไม่ว่าจะเป็น Python, Node.js, Perl หรือ OpenSSL บน macOS จะลบแอตทริบิวต์ quarantine และเซ็นแบบ ad hoc ก่อนรัน
FLATROOF — แบ็กดอร์ Rust ถอดรหัสค่าตั้งค่าด้วย PBKDF2-HMAC-SHA256 และ AES-256-GCM รองรับช่องทางสั่งการ 3 แบบ คือ Telegram Bot API, การ polling ผ่าน GitHub API และ HTTP webhook ของผู้โจมตี (ตัวอย่างที่วิเคราะห์ไม่ได้ตั้งค่าช่องทาง GitHub) สร้างความคงอยู่ต่างกันตามแพลตฟอร์ม ได้แก่ service ชื่อ snap-imagent บน Linux กลไก zlogout ตอนออกจากเชลล์บน macOS และค่า Run ในรีจิสทรีชื่อ powershell-config-service บน Windows ตัวเก็บข้อมูลภาษา Python ขโมยฐานข้อมูลเบราว์เซอร์ โปรไฟล์ Firefox คุกกี้ ประวัติเชลล์ รายชื่อแอปและโปรเซส ร่วมกับ keyring ของ Linux, login.keychain-db ของ macOS และ Credential Manager ของ Windows รุ่น Windows ยังเล็งข้อมูลส่วนขยาย MetaMask, Phantom, Trust Wallet และ Rabby และฉีดไฟล์รันที่ถอดด้วย XOR คีย์ 0x37 เข้าโปรเซส Chromium ที่สร้างแบบ suspended เพื่อดึง master key ของเบราว์เซอร์ พร้อมเครื่องมือ cookie_copy_tool.exe สำหรับคัดลอกคุกกี้เมื่อวิธีปกติไม่ได้ผล
ROOFDECK — แบ็กดอร์บน Windows และ macOS ที่หาที่อยู่ C2 เป็นชั้น ๆ เริ่มจากค่าที่เก็บในเครื่อง ตามด้วยไฟล์บน Pastebin ที่บรรจุที่อยู่เข้ารหัสและลายเซ็น RSA ซึ่งต้องผ่านการตรวจลายเซ็นก่อนจึงจะถูกใช้ ป้องกันคนอื่นมาแย่งยึดมัลแวร์ และสุดท้ายคือช่อง website ในโปรไฟล์ Nostr (ขณะวิเคราะห์คือโปรไฟล์ชื่อ “tulip”) ที่ชี้ไปยัง URL ของ Pastebin ปัจจุบัน เมื่อเชื่อมต่อผ่าน HTTP หรือ WebSocket แล้ว ROOFDECK สำรวจระบบ เปิดเชลล์ย้อนกลับ ส่งรับไฟล์ อ่านคลิปบอร์ด จัดการความคงอยู่ อัปเดตตัวเอง และลบตัวเองได้
ผลกระทบ
แคมเปญนี้เล็งจุดที่ล้ำค่าที่สุดในสายพานซอฟต์แวร์ คือเครื่องวิศวกรและ pipeline ที่รัน terraform init และถือ credential คลาวด์ สิทธิ์ซอร์สโค้ด หรือกุญแจกระเป๋าคริปโต provider ปลอมยังทำงานตามหน้าที่ปกติ ทำให้ deploy ผ่านไปตามปกติและไม่มีสัญญาณผิดพลาดให้สงสัย การรองรับ 3 ระบบปฏิบัติการและหลายสถาปัตยกรรมรวมถึง ARM แบบ 32 บิตแสดงว่าผู้โจมตีเตรียมรับมือทั้งเครื่องนักพัฒนาและเครื่อง build บนเซิร์ฟเวอร์
ประวัติของกลุ่ม TraderTraitor ที่เชื่อมกับการขโมยคริปโตมูลค่าหลายร้อยล้านดอลลาร์ ทั้ง KelpDAO และเหตุการณ์อื่นที่ขึ้นต้นจากการยึดเครื่องนักพัฒนาเพียงเครื่องเดียว ทำให้ความเสี่ยงไม่ได้จำกัดที่ข้อมูลส่วนตัวของวิศวกร แต่ลามไปถึงระบบคลาวด์และระบบการเงินขององค์กร ขณะที่การใช้ GitHub, Vercel, Pastebin และ Nostr เป็นโครงสร้างพื้นฐานทำให้การบล็อกด้วยโดเมนอย่างเดียวทำได้ยาก
คำแนะนำ
- จำกัดให้ Terraform ใช้ provider จากแหล่งที่เชื่อถือได้เท่านั้น ตั้ง
provider_installationให้ใช้ registry หรือ mirror ภายในที่ควบคุมเอง และระวังชื่อที่เลียนแบบอย่างawsbeta - ตรวจ checksum ของ provider กับแหล่งที่เชื่อถือได้ และตรวจไฟล์
.terraform.lock.hclที่มากับโปรเจกต์จากภายนอกทุกครั้ง - เฝ้าระวังโปรเซสลูกที่ไม่คาดคิดซึ่งเกิดจากไบนารี provider เช่น
sh -c,curlหรือการเรียกopenssl/pythonเพื่อถอดรหัสไฟล์ และไฟล์safari_updaterหรือsession.lockในไดเรกทอรีชั่วคราว - ล่าหาความคงอยู่ตามที่รายงาน ได้แก่ service
snap-imagent, รายการimagentในzlogoutและค่า Runpowershell-config-service - แยกงานทดสอบหรือโจทย์สัมภาษณ์จากภายนอกออกจากเครื่องทำงานขององค์กร โดยเฉพาะเครื่องที่มีสิทธิ์คลาวด์หรือ source control และหมุนเวียน credential คลาวด์ โทเคน และกุญแจกระเป๋าคริปโต หากพบตัวบ่งชี้
- บล็อกหรือแจ้งเตือนการเชื่อมต่อไปยังโดเมนและ URL ในตาราง IoC ด้านล่าง และพิจารณาเฝ้าระวังทราฟฟิกไปยังรีเลย์ Nostr จากเครื่องนักพัฒนา
Indicators of Compromise (IoCs)
หมายเหตุ: โดเมนและ URL ถูก defang แล้ว ค่าแฮชเป็น MD5 ตามรายงานของ Zscaler
| แฮช (MD5) | ชื่อไฟล์ | คำอธิบาย |
|---|---|---|
9d78ece09457907b730d139e4e0c64dd | terraform-provider-awsbeta_v1.0.0 | Terraform provider ที่ถูกดัดแปลง |
73adaea97f003735335505858c1c6def | safari_updater | สคริปต์ Bash ตัวโหลด |
116f7189ed7b41f1b339a749d56e63be | HiraginoSans-Bold.woff | FLATROOF เข้ารหัส (Mach-O x86_64) |
be60c52ca8a01fef7dc15c2f0ebb77d8 | HiraginoSans-Regular.woff | FLATROOF เข้ารหัส (Mach-O arm64) |
58fa0d651898446d5f5d2ed8a27a3330 | MalgunGothic-Bold.woff | FLATROOF เข้ารหัส (PE32+) |
2621753691be9521288664bb551dfba6 | MalgunGothic-Italic.woff | FLATROOF เข้ารหัส (PE32) |
ad0b1b6d2c8b9d09d6473a4a299470ab | NotoSansCJK-Bold.woff | FLATROOF เข้ารหัส (ELF x86-64) |
4b8509cde757b5428e5f99c8dffe73ca | NotoSansCJK-ExtraBold.woff | FLATROOF เข้ารหัส (ELF ARM 32 บิต) |
3826dc7a9ba8bd5b1c143560c1530d89 | NotoSansCJK-Italic.woff | FLATROOF เข้ารหัส (ELF i386) |
34a52e6a4d803e94fe497bab682abfd3 | NotoSansCJK-Regular.woff | FLATROOF เข้ารหัส (ELF aarch64) |
2b81aceab0142472d94eb42e500b27b1 | imagent | ROOFDECK สำหรับ macOS |
9d88b4494c7bc27b10358b68a899ad54 | update.exe | ROOFDECK สำหรับ Windows |
| ตัวบ่งชี้เครือข่าย | คำอธิบาย |
|---|---|
hxxps://diagnose.hashicorp-terraform[.]io/plugins/grpc/v6/schema/metrics/333afe63-c5a2-43f0-b046-7cbaa7797e8a | URL ดาวน์โหลดสคริปต์ Bash |
hxxps://supportaru.serveftp[.]com/statics/cache/v11/ | URL ดาวน์โหลด FLATROOF |
hxxps://raw.githubusercontent[.]com/bluearuhost/hospitalrun-frontend/refs/heads/main/public/fonts/version1/ | URL ดาวน์โหลด FLATROOF บน GitHub |
hxxps://stage-fashion365.vercel[.]app/static/tinymce4.7.5/plugins/fonts/v1104/ | URL ดาวน์โหลด FLATROOF บน Vercel |
hxxps://arusupport-region1-webhook[.]online/statics/cache/v11/abicfjej | เซิร์ฟเวอร์ C2 ของ FLATROOF |
hxxps://pastebin[.]com/raw/3yptBDhL | Pastebin dead drop ของ ROOFDECK |
delay.servehttp[.]com | เซิร์ฟเวอร์ C2 ของ ROOFDECK |
