สรุปสั้น
นักวิจัยจากบริษัท Socket ค้นพบเอ็กซ์เทนชัน Mozilla Firefox อันตราย 16 ตัวที่ขโมย recovery phrase (mnemonic) และ private key ของกระเป๋าคริปโต เอ็กซ์เทนชันเหล่านี้ปลอมตัวเป็นพอร์ทัลกระเป๋า ยูทิลิตีบนเดสก์ท็อป และเครื่องมือเบราว์เซอร์ โดย 4 ตัวเป็นร่างโคลนของ Rabby Wallet ที่ตั้งชื่อหลอกตาว่า “Raabby WaIIet” ส่วนอีก 12 ตัวเป็นร่างโคลนที่เลียนแบบหน้าตา OKX Wallet โค้ดจะดักจับความลับระหว่างขั้นตอนนำเข้ากระเป๋า แล้วส่งไปยัง Cloudflare Workers ที่ผู้โจมตีควบคุม ขณะที่ manifest ของทุกตัวประกาศว่าไม่เก็บข้อมูลใด ๆ ซึ่งขัดกับพฤติกรรมจริง
Socket ประเมินด้วยความมั่นใจสูงว่าแคมเปญนี้เป็นความต่อเนื่องของระลอกที่บริษัทเคยรายงานในเดือนสิงหาคม 2569 ผู้โจมตีเปลี่ยนชื่อแพ็กเกจ เวอร์ชัน ID เอ็กซ์เทนชัน คำอธิบาย และหน้าตาไปเรื่อย ๆ แต่ใช้หน้าจอกระเป๋า ตรรกะจัดการ credential และโครงสร้างเครือข่ายชุดเดิม ซึ่ง Socket สรุปว่ามีระบบ builder สร้างร่างแปลงอัตโนมัติ ณ วันที่ 5 ตุลาคม 2569 Mozilla ถอดเอ็กซ์เทนชันทั้งหมดออกแล้ว แต่ผู้ที่เคยกรอก seed phrase หรือ private key จริงลงไปต้องถือว่ากระเป๋าถูกเจาะ และย้ายทรัพย์สินไปยังกระเป๋าใหม่ที่สร้างจากเครื่องที่สะอาด
รายละเอียดข่าว
เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 8 ตุลาคม 2569 อ้างรายงานของ Socket ที่เขียนโดยนาย Joseph Edwards ซึ่งเผยแพร่เมื่อวันที่ 7 ตุลาคม ว่า “เอ็กซ์เทนชันเหล่านี้ปลอมเป็นพอร์ทัลกระเป๋า ยูทิลิตีเดสก์ท็อป และเครื่องมือเบราว์เซอร์ แต่โค้ดของมันดักจับ recovery phrase และ private key ระหว่างขั้นตอนนำเข้ากระเป๋า แล้วพยายามส่งความลับเหล่านั้นไปยัง Cloudflare Workers ที่ผู้โจมตีควบคุม” เอ็กซ์เทนชัน 15 จาก 16 ตัวติดต่อโดเมนใต้ icy-star-f45c.workers[.]dev ทั้งหมดใช้ตัวระบุแคมเปญ EQOx7EIPZSNi เดียวกัน ซึ่งเคยพบในงานวิจัยก่อนหน้าของ Socket
ข่าวนี้ออกมาพร้อมกับการค้นพบเอ็กซ์เทนชันอันตรายหรือน่าสงสัยอีกหลายกลุ่มบน Firefox, Chrome และ Edge ในช่วงหลายเดือนที่ผ่านมา เช่น เอ็กซ์เทนชัน Firefox ชื่อ “ID- Pay” ที่ปลอมเป็นเครื่องมือยืนยันตัวตนก่อนเปิด PDF แต่ inject JavaScript เข้าโดเมน accounts.google[.]com เพื่อขโมย session cookie กลุ่มเอ็กซ์เทนชัน 32 ตัวบน Chrome Web Store และ Edge Add-ons ที่สลับแท็บไปยัง URL ที่กำหนดจากคอนฟิกระยะไกล ซึ่งโยงกับผู้โจมตีที่ใช้ภาษาเกาหลี กลุ่มราว 30 ตัวที่แอบอ้างชื่อบุคคลดังในวงการการเงินเพื่อพาเหยื่อไปหน้าฟิชชิงกระเป๋าคริปโต และกลุ่ม 31 ตัวภาษารัสเซียที่โฆษณาเป็น VPN สำหรับบริการที่ถูกบล็อกในรัสเซียแต่ส่งทราฟฟิกผ่าน proxy ที่ดึงรายชื่อเซิร์ฟเวอร์จาก GitHub Pages รวมถึงเอ็กซ์เทนชัน Stylish และ Poper Blocker บน Chrome ที่ถูกพบว่าเก็บบทสนทนากับแชตบอต AI
วิธีการโจมตี
ร่างโคลน Rabby
ใน background.js มีฟังก์ชัน self._lv ที่รับ phrase 12 คำ 24 คำ หรือ private key แบบ hex 64 ตัวอักษร ตัดค่าซ้ำ เข้ารหัส URL แล้วส่งไปยัง Worker การเรียกฟังก์ชันนี้ถูกแทรกไว้หลังการทำงานจริงของกระเป๋า เช่น การนำเข้า private key และการสร้าง mnemonic keyring ทำให้กระเป๋ายังใช้งานได้ปกติและผู้ใช้ไม่ทันสังเกต ยังมีฟังก์ชันช่วยอีกตัวใน 977.js ที่ถูกคัดลอกไปไว้ในเส้นทางนำเข้าของ UI หลายจุด ความลับหนึ่งค่าจึงอาจถูกส่งออกหลายครั้ง การส่งใช้ HTTPS GET แบบ no-cors และ keepalive ไปยัง silent-wind-get.icy-star-f45c.workers[.]dev โดยใส่ความลับดิบไว้ในพารามิเตอร์ w ของ query string และสำรองด้วย XMLHttpRequest หาก fetch ล้มเหลว ซึ่ง Socket ชี้ว่าทำให้ความลับไปปรากฏในล็อกของเซิร์ฟเวอร์และตัวกลางระหว่างทางด้วย
ร่างโคลน OKX
หน้าจอขอ recovery phrase จากผู้ใช้แล้วส่งไปยัง background script ในข้อความ SEED_PHRASE_IMPORT ซึ่งยังรับข้อความแบบเก่า WALLET_SYNC ด้วย โดยบังคับให้มี 12 หรือ 24 คำพอดี แล้วส่ง JSON ที่มี phrase ดิบในฟิลด์ w ด้วย HTTPS POST ไปยัง Worker 3 โฮสต์ สคริปต์หนึ่งใช้ช่องทางส่งออกถึง 3 แบบ คือ navigator.sendBeacon, fetch แบบ no-cors และ GET ผ่านรูปภาพพิกเซลเป็นทางสำรอง ร่างแปลงตัวหนึ่งมีคอมเมนต์ในโค้ดอ้างว่าส่งไปเพียงแฮชและจำนวนคำ แต่โค้ดจริงส่ง phrase ดิบ ซึ่ง Socket มองว่าเป็นการปกปิดโดยเจตนา ส่วนตัว sipoo-grozza ใช้งานไม่ได้เพราะ manifest ไม่ได้ประกาศ background.js แต่ Socket ย้ำว่าเป็นความผิดพลาดในการส่งมอบ ไม่ใช่หลักฐานว่าไม่เป็นอันตราย รายงานของ Socket ยังระบุจำนวนร่างโคลน OKX ไม่ตรงกันในสองจุด คือ 12 ตัวและ 10 ตัวอย่าง Web3 Portal
ผลกระทบ
recovery phrase หรือ private key ที่หลุดไปแล้วคือการเสียสิทธิ์ควบคุมกระเป๋าอย่างถาวร การเปลี่ยนรหัสผ่านของเอ็กซ์เทนชันไม่ช่วยอะไร เพราะ seed phrase ยังใช้กู้กระเป๋าได้ทุกที่ ทุกบัญชีที่ derive มาจาก mnemonic เดียวกันจึงต้องถือว่าถูกเจาะทั้งหมด ความเสี่ยงยังกระจายไปถึงทุกโปรไฟล์ Firefox และอุปกรณ์ที่ซิงก์เอ็กซ์เทนชันไว้
ในภาพรวม การที่ผู้โจมตีใช้ builder สร้างร่างแปลงใหม่ได้เร็วทำให้การถอดเอ็กซ์เทนชันทีละรอบเป็นเพียงการไล่ตาม และการตรวจรีวิวของร้านเอ็กซ์เทนชันยังไม่เพียงพอจะจับเอ็กซ์เทนชันที่โค้ดหลักเหมือนเดิมแต่เปลี่ยนเปลือกนอก ประกอบกับกระแสเอ็กซ์เทนชันที่เก็บบทสนทนา AI และส่งทราฟฟิกผ่าน proxy เอ็กซ์เทนชันเบราว์เซอร์จึงเป็นพื้นผิวการโจมตีที่องค์กรควรบริหารจัดการเหมือนซอฟต์แวร์ที่ติดตั้งบนเครื่อง
คำแนะนำ
- ผู้ใช้ที่ติดตั้งเอ็กซ์เทนชันในรายการ ให้ลบออกจากทุกโปรไฟล์ Firefox และทุกอุปกรณ์ที่ซิงก์ไว้
- หากเคยกรอก seed phrase หรือ private key จริง ให้สร้างกระเป๋าใหม่ด้วย recovery phrase ใหม่บนเครื่องที่สะอาด ย้ายทรัพย์สินออก และเพิกถอน token approval ของกระเป๋าเดิม
- ติดตั้งกระเป๋าคริปโตจากลิงก์บนเว็บไซต์ทางการของผู้ให้บริการเท่านั้น และตรวจชื่อผู้พัฒนาให้ตรงก่อนติดตั้ง
- องค์กรควรใช้นโยบาย allowlist เอ็กซ์เทนชันผ่าน enterprise policy ของ Firefox/Chrome/Edge บล็อก ID และแฮช XPI ที่ระบุ และค้นคลังเอ็กซ์เทนชันหาแฮช
background.jsและสตริงEQOx7EIPZSNi,Raabby WaIIet,SEED_PHRASE_IMPORT,WALLET_SYNC - ค้นล็อก proxy/DNS หาโฮสต์ Worker ในตาราง IoC โดยปิดบังค่าในฟิลด์
wเพราะเป็น seed phrase ของเหยื่อ ห้ามคัดลอกลงบันทึกเคสหรือการแจ้งเตือน และห้ามรันเอ็กซ์เทนชันบนเครื่องของนักวิเคราะห์
Indicators of Compromise (IoCs)
โดเมนทั้งหมด defang แล้ว (
[.]) ก่อนใช้งานต้องแปลงกลับ
โฮสต์ปลายทาง (Cloudflare Workers)
| โฮสต์ | คำอธิบาย |
|---|---|
silent-wind-get.icy-star-f45c.workers[.]dev | ปลายทางของร่างโคลน Rabby (GET) |
green-firefly-ab28.icy-star-f45c.workers[.]dev | ปลายทางของร่างโคลน OKX (POST) |
small-boat-969c.icy-star-f45c.workers[.]dev | ปลายทางของร่างโคลน OKX (POST) |
flat-wildflower-f954.fondationanimalaidrelief.workers[.]dev | ปลายทางของร่างแปลงที่ใช้งานไม่ได้ |
เอ็กซ์เทนชัน (ID@เวอร์ชัน · XPI SHA-256)
| Extension ID | เวอร์ชัน | XPI SHA-256 |
|---|---|---|
| view-focus-bright@webtools.co | 6.12.2 | 2f9270269e631bc4fd634d741afcfc3df8f54e43e40b16f38660fe8ce6c26f51 |
| quick-track-nest@tabtools.co | 8.1.18 | 225f5d6c5d70a7e7f3abf62ea0dda1cf8bf8e70565f7db748b0d8fa602da939b |
| vibe-kit-tool@fasttools.co | 9.21.9 | 6b53369fb868efb92b60af40fbd5906fa3d3d8785a7878b4af6e4efd333a4de8 |
| edge-hub-snap@protools.net | 4.12.24 | 8906dd85b0991fac14e5973b3f3f61d93ef1101504cb5867a004c762ee184ef7 |
| core-hub-peak@neattools.example | 8.24.21 | 9fea0ee3c81047f5e50eeb3a2ab2a7cd70357f3e49944b7079ab3e90c9ea0e8b |
| sipoo-grozza@browserweb.com | 2.1 | 0aed5f24ce625ee6b9422083302766f74b0b9a57e1b18213328b950cc7057e35 |
| mozart-seo@webtools.com | 1.4 | 635b31b4a19b5673fcbe0fedeb3f7ed2c27fddb739685f19ca5f3d1f1d7f0083 |
| clean-file-bar@neattools.com | 4.21.8 | d9432e41e0401715bce4ce11f4a7104d94fab1ec89be553ba57a2097e418c1a1 |
| clean-net-timer@plugify.example | 4.17.1 | 458e7255438f15aaede02fd7f8fcfdf762aa6e08608b9546fe8aa8aa399c76b7 |
| manager-square@webtools.com | 1.4 | bb8f60b3f77d96adc93bf0515b34df7c5f1f560a9f6d0c353b7d849609e3557d |
| manager-course@webtools.com | 1.4 | 71ec70479ab78efb1e1f9507f8ff7348d5711c837cc50a0120f3a188c340f3f4 |
| val-andrew@browserweb.com | 1.4 | e96c75cd0c9b35000b4a3ec12d5dd23ca157e94aee7271a0fe8d8d7c9f2e9096 |
| manager-team@browserweb.com | 1.4 | faf174414ddc7099360c4ae4d16497b9846cfae71ffad5bbab820bba657f94d3 |
| valory-andrew@browserweb.com | 1.4 | b02ae1d5a0d2a5b28f8baa2afcdc7d7090fab051536303cba3ba1f17860da980 |
| franklin-uk@browserweb.com | 1.4 | 4512389444a767f12211beeb5f2ad165aca4a558e88e8f111affb30b77ed6a5a |
| franklin-uro@browserweb.com | 1.4 | e5c9a29d5ba0f53a49d8b333bfab17bf9878f94e8c3f325f5afacad44bb26fb5 |
ไฟล์ background.js (SHA-256)
| แฮช | คำอธิบาย |
|---|---|
7d9d7e80ed52350616be0215a7ded10aaeb9aaa64e34ff8af7f9177c8c855799 | ร่างโคลน Rabby |
da447fe02e4577da97144a4d92b395078954fde1ff196746413837e1e4a20bcd | แกนร่างโคลน OKX |
be246ca5cb1372394e0443df45454f88ca39eb4a8dcfc4a99cb8865100fb4897 | ร่างแปลงที่ใช้งานไม่ได้ |
c550f0860012e0dfab14ed65a9425961e22025e0ab23fd9d69d294a8aa34db2f | OKX Web3 Portal |
eb134bbf73046800c8177383754cf754b8776ec30cf5cc8a13655d259e49a4bf | frontend แบบย่อที่ใช้ร่วมกัน |
