สรุปสั้น
บริษัท Elastic Security Labs เปิดเผยแคมเปญโจมตีนักพัฒนาซอฟต์แวร์ที่ติดตามในชื่อ REF9403 ซึ่งเชื่อมโยงกับผู้โจมตีชาวเกาหลีเหนือในเครือแคมเปญ Contagious Interview โดยจุดเด่นคือการใช้เทคนิคซ่อนข้อมูล (Steganography) ฝังโค้ดอันตรายไว้ในไฟล์ภาพ SVG รูปธงชาติประเทศต่างๆ เพื่อหลบการตรวจจับ ผู้โจมตีเข้าหาเหยื่อด้วยประกาศรับสมัครงานปลอมและข้อสอบเขียนโค้ดปลอม โดยครั้งนี้เริ่มจากช่องทางใหม่ที่ไม่เคยถูกบันทึกมาก่อน นั่นคือการโพสต์ในช่อง #jobs ของพื้นที่ทำงาน Slack ชุมชนของบริษัท Elastic เอง เมื่อปลายเดือนพฤษภาคม 2569
ผู้ที่แสดงความสนใจจะถูกดึงเข้าไปคุยส่วนตัว แล้วได้รับมอบหมายให้ทำแบบทดสอบเขียนโค้ด ซึ่งเป็นคลังโค้ดที่ฝังมัลแวร์ไว้ บริษัท Elastic ระบุว่า “ผู้ใช้คนใดก็ตามที่รันโปรเจกต์นี้ จะจบลงด้วยเพย์โหลดสี่ชั้นที่สอดคล้องกับ OTTERCOOKIE ได้แก่ ตัวขโมยข้อมูลรับรองในเบราว์เซอร์และกระเป๋าเงินคริปโต ตัวขโมยไฟล์ โทรจันควบคุมระยะไกล (RAT) ที่ใช้ Socket.IO และตัวขโมยข้อมูลจากคลิปบอร์ด” สิ่งที่น่ากังวลเป็นพิเศษคือมัลแวร์ยังไล่เก็บไฟล์ตั้งค่าของเครื่องมือเขียนโค้ดด้วย AI อย่าง .claude, .cursor, .gemini, .windsurf, .pearai และ .llama ด้วย สะท้อนว่าผู้โจมตีกำลังปรับคลังอาวุธให้กวาดข้อมูลได้กว้างขึ้นเรื่อยๆ และการยึดเครื่องนักพัฒนาเพียงคนเดียวอาจกลายเป็นจุดตั้งต้นของการโจมตีห่วงโซ่อุปทาน (Supply Chain) ที่ลามไปถึงองค์กรปลายทางจำนวนมาก
รายละเอียดข่าว
เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 17 กรกฎาคม 2569 ว่า ผู้โจมตีชาวเกาหลีเหนือที่เชื่อมโยงกับแคมเปญ Contagious Interview ถูกพบว่านำเทคนิคซ่อนข้อมูลในไฟล์ภาพ SVG มาใช้อำพรางเพย์โหลดอันตราย ในแคมเปญที่อาศัยประกาศรับสมัครงานปลอมและแบบทดสอบเขียนโค้ดเป็นเครื่องมือหลอกล่อ
บริษัท Elastic Security Labs ซึ่งเป็นหน่วยงานด้านความปลอดภัยของบริษัท Elastic ผู้ให้บริการแพลตฟอร์มค้นหาและสังเกตการณ์ระดับองค์กรจากเนเธอร์แลนด์ ระบุว่าค้นพบแคมเปญนี้หลังจากผู้โจมตีเข้ามาหลอกล่อสมาชิกในพื้นที่ทำงาน Slack ของชุมชนบริษัทเอง ด้วยข้อเสนอเรื่องงานที่อ้างว่าเป็นโอกาสจ้างงานจริง ซึ่งถือเป็นช่องทางเข้าถึงเหยื่อรูปแบบใหม่ที่ไม่เคยถูกบันทึกไว้ในการโจมตีที่เกี่ยวข้องกับแคมเปญ Contagious Interview มาก่อน โดยแคมเปญดังกล่าวเป็นปฏิบัติการวิศวกรรมสังคมที่ซับซ้อนและดำเนินมาอย่างต่อเนื่องตั้งแต่อย่างน้อยเดือนธันวาคม 2565
ข้อความที่ใช้ล่อเหยื่อถูกโพสต์โดยผู้ใช้ชื่อ Maxwell ในช่อง #jobs ของ Slack เมื่อช่วงปลายเดือนพฤษภาคม 2569 โดยอ้างว่ากำลังมองหานักพัฒนาที่มีประสบการณ์มาช่วยยกระดับแพลตฟอร์มอีคอมเมิร์ซให้เป็น “สถาปัตยกรรมสมัยใหม่ที่ขยายขนาดได้ ด้วย Next.js (v14), NestJS, PostgreSQL และ Auth.js” พร้อมการเชื่อมต่อระบบชำระเงิน Stripe ผู้ที่แสดงความสนใจจะถูกดึงเข้าไปพูดคุยในข้อความส่วนตัว แล้วได้รับคำสั่งให้ทำแบบทดสอบเขียนโค้ดเป็นส่วนหนึ่งของข้อเสนองาน ซึ่งเป็นกลลวงมาตรฐานที่พบในแคมเปญ Contagious Interview โดยงานที่มอบหมายคือการรันคลังโค้ดที่ถูกฝังมัลแวร์ไว้ ซึ่งออกแบบมาเพื่อขโมยข้อมูลมีค่าและตั้งค่าแบ็กดอร์ Socket.IO
การค้นพบครั้งนี้ตอกย้ำอีกครั้งว่านักพัฒนาซอฟต์แวร์ยังคงเป็นเป้าหมายต่อเนื่องของแฮ็กเกอร์ที่รัฐบาลเกาหลีเหนือหนุนหลัง โดยมีเป้าหมายทั้งการขโมยข้อมูลอ่อนไหวและการปล้นกระเป๋าเงินคริปโตเคอร์เรนซี บริษัท Elastic ยังระบุว่ามัลแวร์ตัวนี้มีความทับซ้อนเชิงฟังก์ชันกับตัวขโมยข้อมูลและโทรจันที่ถูกแจกจ่ายผ่านแพ็กเกจ npm ปลอมที่แอบอ้างเป็นเครื่องมือ Rollup polyfill ซึ่งบ่งชี้ว่าผู้โจมตีกำลังเดินหลายช่องทางการแพร่กระจายไปพร้อมกัน
วิธีการโจมตี
หัวใจของเทคนิคใหม่ในแคมเปญนี้คือ คลังโค้ดที่แจกจ่ายให้เหยื่อนั้นมีโค้ดที่ใช้งานได้จริงอย่างสมบูรณ์ แต่แอบฝังโค้ดอันตรายไว้ในรูปของไฟล์ภาพ SVG เพื่อเลี่ยงการตรวจจับ บริษัท Elastic อธิบายว่า “แม้โปรเจกต์ที่ดูถูกต้องตามกฎหมายเหล่านี้จะทำงานได้อย่างสมบูรณ์ แต่โค้ดอันตรายจะถูกกระตุ้นอย่างเงียบเชียบอยู่เบื้องหลัง เพย์โหลดถูกแบ่งเป็นชิ้นส่วน Base64 วางไว้ในคอมเมนต์ของ HTML กระจายอยู่ในไฟล์ภาพ SVG รูปธงชาติทุกไฟล์ภายในไดเรกทอรี assets ไฟล์เหล่านี้ดูเหมือนภาพธงชาติประเทศต่างๆ ตามปกติ (AE.svg, AF.svg) แต่แต่ละไฟล์กลับมีบล็อกคอมเมนต์ที่ถูกแทรกข้อมูลซึ่งเข้ารหัสแบบ Base64 เอาไว้”
จากนั้นเพย์โหลดจะถูกประกอบกลับเข้าด้วยกันโดยไฟล์ JavaScript ชื่อ serverValidation.js ที่อยู่ในคลังโค้ดเดียวกัน และห่วงโซ่การโจมตีถูกออกแบบให้มัลแวร์ทำงานทุกครั้งที่เซิร์ฟเวอร์เริ่มต้นระบบ วิธีนี้ทำให้การตรวจสอบโค้ดด้วยสายตาแทบไม่มีทางสังเกตเห็น เพราะไฟล์ภาพธงชาติเป็นสิ่งที่ปรากฏในโปรเจกต์อีคอมเมิร์ซได้อย่างสมเหตุสมผล และเครื่องมือสแกนความปลอดภัยจำนวนมากก็ไม่ได้มองไฟล์ภาพเป็นแหล่งของโค้ดที่ต้องตรวจ
เพย์โหลดหลักมีความทับซ้อนกับ OtterCookie ซึ่งเป็นมัลแวร์ข้ามแพลตฟอร์มที่ปรากฏตัวครั้งแรกเมื่อเดือนกันยายน 2567 โดยบริษัท Microsoft เคยระบุไว้เมื่อเดือนมีนาคมว่า OtterCookie “พัฒนาจากเครื่องมือพื้นฐานสำหรับรันคำสั่งระยะไกลและค้นหากุญแจคริปโต มาเป็นโปรแกรมแบบโมดูลที่ขโมยข้อมูลได้กว้างขึ้น พร้อมความสามารถในการตรวจสอบสภาพแวดล้อมเครื่องเสมือน (VM) ติดตั้งไคลเอนต์สื่อสารอย่าง socket.io เพื่อใช้เป็นช่องสั่งการและควบคุม (C2) ส่งข้อมูลออกนอกเครือข่าย รันคำสั่งเชลล์ตามอำเภอใจ โหลดโมดูลอื่นเพื่อเก็บข้อมูลเฉพาะที่ต้องการ และรายงานผลกลับ”
มัลแวร์ประกอบด้วยโมดูลแยกกัน 4 ส่วน ที่ทำหน้าที่เก็บเกี่ยวข้อมูลจากเว็บเบราว์เซอร์และกระเป๋าเงินคริปโตเคอร์เรนซี รวบรวมไฟล์ที่ตรงกับรายการนามสกุลที่กำหนดไว้ เปิดช่องควบคุมระยะไกลแบบฝังตัวด้วยโทรจันที่ใช้ Socket.IO ซึ่งรันคำสั่งเชลล์ได้ ดักจับเนื้อหาในคลิปบอร์ด และปล่อยไฟล์รันได้ของ Windows ลงเครื่อง จุดที่น่าจับตาเป็นพิเศษคือรายการไฟล์ที่ OtterCookie ไล่เก็บนั้นรวมถึงไฟล์ตั้งค่าของส่วนขยายเครื่องมือเขียนโค้ดด้วยปัญญาประดิษฐ์ ได้แก่ .claude, .cursor, .gemini, .windsurf, .pearai และ .llama ซึ่งบ่งชี้ว่าผู้โจมตีกำลังปรับปรุงคลังอาวุธอย่างต่อเนื่องเพื่อดูดข้อมูลให้ได้มากที่สุด และไฟล์เหล่านี้มักบรรจุกุญแจ API และข้อมูลรับรองที่เชื่อมต่อกับระบบภายในองค์กร
ผลกระทบต่อไทย
ประเทศไทยมีชุมชนนักพัฒนาซอฟต์แวร์และผู้ที่ทำงานในวงการคริปโตเคอร์เรนซีจำนวนมากที่รับงานอิสระข้ามประเทศ และเป็นสมาชิกของพื้นที่ Slack, Discord หรือกลุ่มออนไลน์ของชุมชนโอเพนซอร์สระดับโลก ซึ่งเป็นช่องทางเดียวกับที่ผู้โจมตีใช้เข้าหาเหยื่อในแคมเปญนี้ นักพัฒนาไทยที่กำลังมองหางานหรือโอกาสรับจ้างจากต่างประเทศจึงอยู่ในกลุ่มเสี่ยงโดยตรง โดยเฉพาะเมื่อกลลวงนี้ไม่ได้มาในรูปอีเมลฟิชชิงที่คนคุ้นเคย แต่มาในรูปข้อเสนองานที่ดูน่าเชื่อถือในพื้นที่ที่ผู้ใช้ไว้วางใจอยู่แล้ว
ความเสียหายไม่ได้จำกัดอยู่แค่ตัวบุคคล เพราะนักพัฒนามักใช้เครื่องเดียวกันทำงานให้ลูกค้าหลายราย และเก็บกุญแจเข้าถึงระบบคลาวด์ ข้อมูลรับรองของคลังโค้ด รวมถึงโทเคนของบริการต่างๆ ไว้บนเครื่องนั้น เมื่อเครื่องถูกยึด ผู้โจมตีจึงมีโอกาสเดินต่อเข้าไปยังระบบขององค์กรลูกค้าได้ กลายเป็นการโจมตีห่วงโซ่อุปทาน (Supply Chain) ที่ลามไปไกลกว่าเหยื่อรายแรกมาก นอกจากนี้การที่มัลแวร์เจาะจงเก็บไฟล์ตั้งค่าของเครื่องมือ AI ยังสะท้อนความเสี่ยงใหม่สำหรับองค์กรไทยที่กำลังนำเครื่องมือเขียนโค้ดด้วย AI มาใช้อย่างแพร่หลาย แต่ยังไม่ได้จัดการกุญแจและข้อมูลรับรองในไฟล์ตั้งค่าเหล่านั้นให้ปลอดภัย
คำแนะนำ
นักพัฒนาควรตั้งสมมติฐานว่าแบบทดสอบเขียนโค้ดจากผู้ว่าจ้างที่ติดต่อมาทางออนไลน์อาจเป็นกับดัก และไม่ควรรันโค้ดจากคนแปลกหน้าบนเครื่องที่ใช้ทำงานจริงเด็ดขาด หากจำเป็นต้องทดสอบ ควรรันในเครื่องเสมือนหรือคอนเทนเนอร์ที่แยกขาดจากเครือข่ายและข้อมูลสำคัญ พร้อมทั้งตรวจสอบคลังโค้ดก่อนรันด้วยการดูสคริปต์ที่ทำงานอัตโนมัติ โดยเฉพาะไฟล์ที่ถูกเรียกตอนเริ่มระบบ และอย่ามองข้ามไฟล์ที่ดูไม่มีพิษภัยอย่างไฟล์ภาพ SVG ซึ่งแคมเปญนี้ใช้เป็นที่ซ่อนโค้ด
ผู้ดูแลระบบขององค์กรควรกำหนดนโยบายห้ามรันโค้ดจากแหล่งภายนอกบนเครื่องที่เชื่อมต่อระบบภายใน และเฝ้าระวังพฤติกรรมผิดปกติที่บ่งชี้การทำงานของมัลแวร์กลุ่มนี้ เช่น กระบวนการ Node.js ที่เปิดการเชื่อมต่อ Socket.IO ออกไปยังเซิร์ฟเวอร์ภายนอก หรือการอ่านไฟล์ในไดเรกทอรีของกระเป๋าเงินคริปโตและเบราว์เซอร์อย่างผิดปกติ ควบคู่กับการตรวจสอบกลไกการทำงานอัตโนมัติเมื่อเครื่องเริ่มระบบ
องค์กรที่ใช้เครื่องมือเขียนโค้ดด้วย AI ควรทบทวนว่าไฟล์ตั้งค่าอย่าง .claude, .cursor, .gemini หรือ .windsurf มีกุญแจ API หรือข้อมูลรับรองใดฝังอยู่หรือไม่ และย้ายความลับเหล่านั้นไปเก็บในระบบจัดการความลับที่เหมาะสมแทนการวางไว้ในไฟล์ตั้งค่าบนเครื่อง สุดท้ายควรให้ความรู้แก่พนักงานสายเทคนิคว่ากลลวงจ้างงานปลอมของกลุ่มเกาหลีเหนือได้ขยายช่องทางจากอีเมลและ LinkedIn มาสู่พื้นที่ชุมชนอย่าง Slack แล้ว และหากพบว่าเครื่องถูกเจาะ ควรถือว่าข้อมูลรับรองทุกชุดบนเครื่องนั้นรั่วไหล และเร่งเพิกถอนพร้อมออกใหม่ทั้งหมด
