สรุปสั้น
แคมเปญที่เคลื่อนไหวมาตั้งแต่เดือนพฤศจิกายนปีที่แล้วกำลังพุ่งเป้านักพัฒนา Python ที่สร้างบอต Telegram ด้วยการปล่อย Pyrogram ปลอม (trojanized fork) ที่เปิดทางให้ผู้โจมตีอ่านไฟล์ใด ๆ บนเซิร์ฟเวอร์ที่ถูกยึด มีแพ็กเกจอย่างน้อย 8 ตัวถูกเผยแพร่บน Python Package Index (PyPI) พร้อมแบ็กดอร์ที่ซ่อนอยู่ ซึ่งจะทำงานผ่านโมดูลตัวช่วยเมื่อมีการ import Pyrogram หรือเมื่อบอตเริ่มทำงาน แม้ว่าโปรเจกต์ Pyrogram จะไม่ได้รับการดูแลแล้ว แต่ยังคงได้รับความนิยม โดยมียอดดาวน์โหลดเกือบ 350,000 ครั้งต่อเดือนบน PyPI และมีมากกว่า 1,400 fork บน GitHub ทำให้กลายเป็นเป้าหมายที่น่าสนใจสำหรับผู้โจมตี Pyrogram เป็นเฟรมเวิร์ก MTProto API ของ Telegram ที่ทันสมัยและทำงานแบบ asynchronous ในภาษา Python ช่วยให้นักพัฒนาสร้างบอตหรือ userbot อัตโนมัติได้
นักวิจัยจากบริษัท Checkmarx ผู้เชี่ยวชาญด้านความปลอดภัยแอปพลิเคชัน ตั้งชื่อแคมเปญนี้ว่า Operation Navy Ghost โดยพบว่าผู้โจมตีได้เผยแพร่ Pyrogram ปลอมหลายตัวบน PyPI ระหว่างเดือนพฤศจิกายน 2025 ถึงมิถุนายน 2026 แพ็กเกจทั้งหมดเป็น fork ของโปรเจกต์ Pyrogram ที่ถูกต้อง เพราะมีซอร์สโค้ดต้นฉบับรวมอยู่ด้วย แต่ผู้โจมตีได้เพิ่มแบ็กดอร์ที่ชื่อ secret.py ซ่อนไว้ในโมดูล helpers ซึ่งจะลงทะเบียนตัวจัดการคำสั่ง Telegram แบบซ่อนเมื่อบอตที่ติดมัลแวร์เริ่มทำงาน เปิดให้รันโค้ด Python ที่ผู้โจมตีป้อนหรือคำสั่งเชลล์ได้ทันที
รายละเอียดข่าว
เว็บไซต์ BleepingComputer รายงานเมื่อวันที่ 30 มิถุนายน 2569 ว่า ตามข้อมูลของ Checkmarx แพ็กเกจ Pyrogram ปลอมที่ผู้โจมตีเผยแพร่ประกอบด้วย VLifeGram (9 เวอร์ชัน 4,150 ดาวน์โหลด), VLife-Gram (5 เวอร์ชัน 1,030 ดาวน์โหลด), pyrogram-navy (6 เวอร์ชัน 2,530 ดาวน์โหลด), pyrogram-styled (มากกว่า 16 เวอร์ชัน 15,370 ดาวน์โหลด), pyrogram-zeeb (1 เวอร์ชัน 432 ดาวน์โหลด), kelragram (3 เวอร์ชัน 1,041 ดาวน์โหลด), sepgram (1 เวอร์ชัน 264 ดาวน์โหลด) และ pyrogram-kelra (1 เวอร์ชัน 672 ดาวน์โหลด)
Checkmarx อธิบายว่า เมื่อผู้โจมตีส่งคำสั่ง /asu print(os.environ) ไปยังบอตของเหยื่อ ฟังก์ชันนี้จะคอมไพล์และรันโค้ด Python นั้นบนเครื่องของเหยื่อ พร้อมสิทธิ์เข้าถึงไคลเอนต์ Telegram ที่ใช้งานอยู่ เซสชัน แชท รายชื่อผู้ติดต่อ และตัวแปรสภาพแวดล้อม (environment variables) อย่างเต็มที่ และเมื่อผู้โจมตีส่งคำสั่ง /asi cat /etc/passwd จะเป็นการรัน /bin/bash -c “cat /etc/passwd” บนเซิร์ฟเวอร์ของเหยื่อและส่งผลลัพธ์กลับ ซึ่งทำซ้ำได้กับคำสั่งเชลล์ใด ๆ และรันภายใต้สิทธิ์ของแอปพลิเคชันที่ติดมัลแวร์ หมายความว่ามัลแวร์สามารถเข้าถึงและขโมยทุกสิ่งที่แอปพลิเคชันนั้นเข้าถึงได้อย่างถูกต้อง ผลลัพธ์คำสั่งจะถูกส่งกลับผ่านข้อความ Telegram และหากเกิน 4,096 ไบต์ จะถูกส่งเป็นไฟล์แนบไปยังผู้โจมตี

แบ็กดอร์มีรายการ ‘OWNERS’ ที่ฝัง Telegram ID ไว้ในโค้ด ซึ่งให้สิทธิ์ควบคุมเฉพาะแก่ผู้โจมตี รายการนี้ยังช่วยปิดการทำงานของแบ็กดอร์เมื่อรันบนระบบของผู้โจมตีเอง มัลแวร์พุ่งเป้าเฉพาะบัญชีบอต Telegram และออกแบบมาให้ทำงานเงียบ ๆ โดยระงับข้อผิดพลาดและปิดการบันทึกล็อก นักวิจัยของ Checkmarx สังเกตว่าแบ็กดอร์จะเปิดใช้งานเฉพาะบนบัญชีบอต Telegram ซึ่งมักรันในสภาพแวดล้อม production ซึ่งเป็นฟังก์ชันที่จงใจ บ่งชี้ว่าผู้โจมตีต้องการเข้าถึงฐานข้อมูล ข้อมูลรับรอง API คลาวด์ และโครงสร้างพื้นฐานที่อ่อนไหว
รายละเอียดการโจมตี
เมื่อบอตทำงาน ผู้โจมตีสามารถอ่านไฟล์ใด ๆ บนเซิร์ฟเวอร์ ดึงข้อมูลลับ (secrets) เข้าถึงแชท Telegram ของเหยื่อ ดาวน์โหลดฐานข้อมูล และติดตั้งแบ็กดอร์แบบถาวรได้ แม้ว่าแพ็กเกจจะถูกเผยแพร่จากบัญชี PyPI ต่างกัน แต่ Checkmarx สรุปว่าเป็นฝีมือของผู้โจมตีรายเดียว โดยอ้างอิงจากรายการ OWNERS ที่ใช้ร่วมกันในแพ็กเกจต่าง ๆ โค้ดแบ็กดอร์ที่เหมือนกัน ชื่อคำสั่งที่เหมือนกัน และโครงสร้างพื้นฐานที่ทับซ้อนกัน แคมเปญนี้เป็นตัวอย่างชัดเจนของการโจมตีแบบ supply chain ที่อาศัยความไว้วางใจของนักพัฒนาต่อแพ็กเกจโอเพนซอร์ส โดยเฉพาะโปรเจกต์ยอดนิยมที่เลิกดูแลแล้วแต่ยังมีคนใช้จำนวนมาก ทำให้ fork ปลอมแทรกตัวเข้ามาได้ง่าย
ผลกระทบต่อไทย
นักพัฒนาในไทยจำนวนมากใช้ Python และสร้างบอต Telegram สำหรับงานหลากหลาย ตั้งแต่ระบบแจ้งเตือน ระบบอัตโนมัติ ไปจนถึงบริการที่เชื่อมต่อกับระบบหลังบ้านขององค์กร บอตเหล่านี้มักรันในสภาพแวดล้อม production ที่มีสิทธิ์เข้าถึงฐานข้อมูล คีย์ API และข้อมูลลูกค้า ซึ่งตรงกับเป้าหมายของแคมเปญนี้พอดี การติดตั้ง Pyrogram ปลอมเพียงตัวเดียวอาจเปิดทางให้ผู้โจมตีเข้าควบคุมเซิร์ฟเวอร์และขโมยข้อมูลอ่อนไหวได้ทั้งหมด นักพัฒนาไทยที่มักติดตั้งแพ็กเกจโดยพิมพ์ชื่อจากความจำหรือคัดลอกจากบทความ/ฟอรัมโดยไม่ตรวจสอบ มีความเสี่ยงสูงที่จะพิมพ์ชื่อผิดไปโดนแพ็กเกจปลอม (typosquatting) โดยเฉพาะเมื่อชื่ออย่าง pyrogram-navy หรือ pyrogram-styled ดูคล้ายของจริง
คำแนะนำ
นักพัฒนาที่อาจติดตั้งแพ็กเกจที่ระบุในรายการควรลบออกทันที หมุนเวียนข้อมูลรับรอง (credentials) ทั้งหมดบนเซิร์ฟเวอร์ที่ได้รับผลกระทบ และเพิกถอนโทเคนบอต Telegram โดยด่วน ควรติดตั้งเฉพาะแพ็กเกจ Pyrogram ต้นฉบับที่ถูกต้องเท่านั้น และตรวจสอบชื่อแพ็กเกจให้ถูกต้องทุกครั้งก่อน pip install เพื่อหลีกเลี่ยง typosquatting ควรใช้เครื่องมือสแกน dependency และ software composition analysis (SCA) เพื่อตรวจจับแพ็กเกจอันตรายในไปป์ไลน์ พิจารณาใช้ virtual environment แยกต่อโปรเจกต์ และตรวจสอบซอร์สโค้ดของ dependency ที่มาจากโปรเจกต์ที่เลิกดูแลแล้วเป็นพิเศษ Checkmarx ได้เผยแพร่ indicators of compromise สำหรับ Telegram ID ที่เป็นอันตรายพร้อม URL โปรไฟล์ของผู้โจมตีไว้แล้ว
Indicators of Compromise (IoCs)
แพ็กเกจ PyPI อันตรายในแคมเปญ Operation Navy Ghost:
| แพ็กเกจ | เวอร์ชัน | ยอดดาวน์โหลด |
|---|---|---|
| VLifeGram | 9 | 4,150 |
| VLife-Gram | 5 | 1,030 |
| pyrogram-navy | 6 | 2,530 |
| pyrogram-styled | 16+ | 15,370 |
| pyrogram-zeeb | 1 | 432 |
| kelragram | 3 | 1,041 |
| sepgram | 1 | 264 |
| pyrogram-kelra | 1 | 672 |
| ไฟล์แบ็กดอร์ | secret.py (ในโมดูล helpers) | คำสั่ง /asu, /asi |
