สรุปสั้น

นักวิจัยด้านความมั่นคงปลอดภัยไซเบอร์ค้นพบกลุ่มแพ็กเกจ npm อันตราย 7 ตัวที่พุ่งเป้าไปยังระบบนิเวศเครื่องมือพัฒนาส่วนหน้า (frontend) ของ Vite ซึ่งเป็นส่วนหนึ่งของการโจมตีห่วงโซ่อุปทาน (Supply Chain) ด้านซอฟต์แวร์ แคมเปญนี้ถูกบริษัท Checkmarx ตั้งชื่อรหัสว่า ViteVenom และถือเป็นการขยายตัวของแคมเปญเดิมที่ชื่อ ChainVeil ซึ่งเคยถูกพบว่าใช้โครงสร้างพื้นฐานสั่งการและควบคุม (command-and-control หรือ C2) บนบล็อกเชนแบบ 4 ชั้นที่นักวิจัยเรียกว่า “ไม่เคยปรากฏมาก่อน” ครอบคลุมทั้งเครือข่าย Tron, Aptos และ Binance Smart Chain เพื่อส่งโทรจันควบคุมระยะไกล (RAT) ที่สามารถเปิด reverse shell เก็บเกี่ยวข้อมูลรับรอง ส่งไฟล์ออกจากเครื่อง และฝังแบ็กดอร์ไว้อย่างถาวร

นาย Pavan Gudimalla นักวิจัยของบริษัท Checkmarx ระบุว่า “กลวิธีนี้ทำให้การปิดหรือทำลายโครงสร้างพื้นฐาน C2 เป็นเรื่องยากอย่างยิ่ง” โดยกิจกรรมดังกล่าวถูกเชื่อมโยงกับผู้โจมตีที่ใช้ชื่อว่า SuccessKey และพบหลักฐานความเคลื่อนไหวย้อนหลังไปถึงวันที่ 27 กุมภาพันธ์ 2569 ซึ่งเป็นช่วงที่กระเป๋าเงินคริปโตที่เชื่อมโยงกับ ViteVenom เริ่มถูกเปิดใช้งาน จุดต่างสำคัญจากแคมเปญเดิมคือ ขณะที่ ChainVeil ใช้ชื่อแพ็กเกจแบบพิมพ์ผิด (typosquat) ที่ไม่มี scope ปลอมเป็นไลบรารีของ Tailwind, Sass, ORM และเครื่องมือจำกัดอัตราการเรียกใช้ แต่ ViteVenom หันมาใช้ชื่อแพ็กเกจแบบมี scope เพื่อเลียนแบบเนมสเปซ @vitejs/* ให้ดูน่าเชื่อถือ และเจาะจงเป้าหมายไปที่นักพัฒนาที่สร้างแอปพลิเคชันด้วยเครื่องมือ Vite โดยเฉพาะ

รายละเอียดข่าว

เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 18 กรกฎาคม 2569 ว่านักวิจัยจากบริษัท Checkmarx ได้เปิดเผยคลัสเตอร์แพ็กเกจ npm อันตราย 7 ตัวที่ถูกเผยแพร่ระหว่างวันที่ 29 มิถุนายนถึง 3 กรกฎาคม 2569 ประกอบด้วย @uw010010/vite-tree (ดาวน์โหลด 1,070 ครั้ง), @vite-tab/tab (289 ครั้ง), @vite-ln/build-ts (252 ครั้ง), @vite-mcp/vite-type (239 ครั้ง), @vite-pro/vite-ui (200 ครั้ง), @vitets/vite-ts (194 ครั้ง) และ @vite-ts/vite-ui (176 ครั้ง) ตัวเลขดาวน์โหลดเหล่านี้อาจดูไม่มากนัก แต่ในบริบทของการโจมตีห่วงโซ่อุปทาน แพ็กเกจเพียงตัวเดียวที่ถูกดึงเข้าโครงการหนึ่งก็เพียงพอจะเปิดทางเข้าถึงเครื่องนักพัฒนาและระบบ CI/CD ขององค์กรทั้งองค์กรได้

สิ่งที่เชื่อมโยงแคมเปญ ViteVenom เข้ากับ ChainVeil อย่างชัดเจนคือการใช้โครงสร้างพื้นฐานชั้นที่สอง (tier-2) ร่วมกันในการส่งมอบ RAT โดยเฉพาะการใช้ที่อยู่กระเป๋า Tron และบัญชี Aptos ชุดเดียวกัน ซึ่งชี้ไปยังธุรกรรมบน Binance Smart Chain รายการเดียวกันที่นำไปสู่ตัวมัลแวร์ ทั้งนี้บริษัท Checkmarx อธิบายว่า “ความแตกต่างในระดับพื้นผิว ไม่ว่าจะเป็นชื่อแพ็กเกจที่ต่างกัน บัญชีผู้ดูแลที่ต่างกัน กระเป๋าชั้นที่หนึ่งที่ต่างกัน หรือเส้นทางไฟล์อันตรายที่ต่างกัน ล้วนสอดคล้องกับวิธีที่ผู้ปฏิบัติการรายเดียวจะแบ่งช่องทางการกระจายหลายช่องออกจากกัน เพื่อจำกัดความเสียหายหากช่องใดช่องหนึ่งถูกเปิดโปง”

จุดที่ทำให้แคมเปญนี้อันตรายเป็นพิเศษคือช่วงเวลาที่โค้ดอันตรายทำงาน เช่นเดียวกับ ChainVeil โค้ดจะไม่ถูกรันตอนติดตั้งแพ็กเกจ (install time) แต่จะรันตอนที่โค้ดถูกเรียกใช้งาน (import time) แทน ซึ่งส่งผลให้ระบบป้องกันปลายทางและเครื่องมือสแกนแพ็กเกจจำนวนมากตรวจจับได้ยากขึ้น เพราะเครื่องมือเหล่านั้นมักเฝ้าดูพฤติกรรมในช่วงติดตั้งเป็นหลัก

วิธีการโจมตี

โค้ดอันตรายในแพ็กเกจทำหน้าที่เป็นตัวโหลด (loader) ที่ติดต่อกับโครงสร้างพื้นฐานบนบล็อกเชนเพื่อดึงเพย์โหลดขั้นถัดไป โดยมีลำดับการทำงาน 4 ขั้นตอน เริ่มจากสอบถามบล็อกเชน Tron เพื่อหาธุรกรรมล่าสุดจากกระเป๋าของผู้โจมตี จากนั้นถอดรหัสและกลับลำดับข้อมูลในฟิลด์ธุรกรรมเพื่อให้ได้ค่าแฮชของธุรกรรมบน Binance Smart Chain ต่อด้วยการสอบถามธุรกรรม BSC นั้นเพื่อดึงเพย์โหลดที่ถูกเข้ารหัสออกมาจากฟิลด์อินพุต และสุดท้ายถอดรหัสเพย์โหลดด้วยกุญแจที่ฝังไว้ตายตัวในโค้ด

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

นอกจากนี้ยังมีกลไกสำรองซ้อนกันหลายชั้น หากการดึงเพย์โหลดผ่าน Tron ล้มเหลว มัลแวร์จะหันไปใช้ Aptos เป็นช่องทางสำรอง ส่วนเพย์โหลดที่ได้มาก็จะสอบถามบล็อกเชนอีกครั้งเพื่อดึงค่าตั้งค่า C2 และตัวโหลดขั้นถัดไปที่มีหน้าที่เปิดใช้งาน RAT และหากช่องทางบล็อกเชนใช้การไม่ได้ทั้งหมด ยังมีกลไกสำรองสุดท้ายที่ดึงตัว RAT มาจากเซิร์ฟเวอร์ C2 โดยตรงผ่าน HTTP ข้ามบล็อกเชนไปเลย ทำให้การตัดช่องทางใดช่องทางหนึ่งไม่เพียงพอที่จะหยุดการโจมตี

ผลกระทบต่อไทย

Vite เป็นเครื่องมือ build ที่ได้รับความนิยมสูงมากในหมู่นักพัฒนาเว็บสมัยใหม่ทั่วโลกรวมถึงในประเทศไทย โดยเฉพาะทีมที่ทำงานกับ Vue, React และ Svelte ทั้งในบริษัทซอฟต์แวร์ สตาร์ตอัป เอเจนซี และทีมพัฒนาภายในองค์กรขนาดใหญ่ การที่ผู้โจมตีเลือกใช้ชื่อแพ็กเกจแบบมี scope เลียนแบบเนมสเปซ @vitejs/* ทำให้นักพัฒนาที่รีบร้อนหรือคัดลอกคำสั่งติดตั้งมาจากบทความหรือคำตอบของ AI มีโอกาสติดตั้งแพ็กเกจปลอมโดยไม่ทันสังเกต

ผลกระทบไม่ได้จำกัดอยู่แค่เครื่องของนักพัฒนาคนเดียว เพราะเครื่องนักพัฒนามักเก็บกุญแจ SSH โทเคนเข้าถึง Git ข้อมูลรับรองคลาวด์ และไฟล์ตั้งค่าที่เชื่อมต่อไปยังระบบขององค์กรโดยตรง เมื่อ RAT ฝังตัวได้แล้ว ผู้โจมตีจะสามารถเคลื่อนตัวเข้าสู่ระบบ CI/CD และซอร์สโค้ดขององค์กรได้ ซึ่งอาจนำไปสู่การฝังโค้ดอันตรายลงในผลิตภัณฑ์ที่องค์กรส่งต่อให้ลูกค้าอีกทอดหนึ่ง อีกประเด็นที่ท้าทายสำหรับทีมความปลอดภัยไทยคือการที่ C2 อยู่บนบล็อกเชนสาธารณะ ทำให้การบล็อกโดเมนหรือ IP ตามรายการภัยคุกคามแบบเดิมแทบไม่ได้ผล ต้องหันไปเฝ้าระวังพฤติกรรมที่ผิดปกติของกระบวนการ Node.js แทน

คำแนะนำ

ผู้ที่ติดตั้งแพ็กเกจในรายการข้างต้นควรถอนออกทันที ตรวจสอบรายการ dependency ทั้งหมดในโครงการอย่างละเอียด หมุนเปลี่ยนข้อมูลรับรองทุกชุดที่เครื่องนั้นเคยเข้าถึง ทั้งโทเคน Git, กุญแจ SSH, ข้อมูลรับรองคลาวด์ และรหัสผ่านฐานข้อมูล พร้อมทั้งตรวจหาการแก้ไขที่ไม่ได้รับอนุญาตในไฟล์ .bashrc, .zshrc และ .profile ซึ่งเป็นจุดที่มัลแวร์นิยมใช้ฝังตัวให้ทำงานทุกครั้งที่เปิดเชลล์

ในเชิงป้องกันระยะยาว องค์กรควรตรวจสอบชื่อแพ็กเกจและ scope ให้ตรงกับต้นฉบับทุกครั้งก่อนติดตั้ง โดยเนมสเปซที่ถูกต้องของ Vite คือ @vitejs เท่านั้น ควรใช้ registry ภายในหรือ proxy ที่คัดกรองแพ็กเกจก่อนอนุญาตให้ดาวน์โหลด ตรึงเวอร์ชัน dependency ด้วยไฟล์ล็อกและเปิดใช้การตรวจสอบความสมบูรณ์ (integrity check) รวมถึงรันงาน build ในคอนเทนเนอร์หรือสภาพแวดล้อมแยกที่ไม่มีข้อมูลรับรองที่ไม่จำเป็น เพื่อจำกัดความเสียหายหากมีแพ็กเกจอันตรายเล็ดลอดเข้ามา นอกจากนี้ควรเฝ้าระวังการเชื่อมต่อขาออกจากเครื่องนักพัฒนาไปยังโหนด RPC ของบล็อกเชนสาธารณะ ซึ่งเป็นพฤติกรรมที่ผิดปกติอย่างยิ่งสำหรับโครงการเว็บทั่วไปที่ไม่ได้เกี่ยวข้องกับคริปโต

แหล่งอ้างอิง