สรุปสั้น
บริษัท Wiz เปิดเผยว่าผู้โจมตีได้ต่อช่องโหว่สองตัวใน JFrog Artifactory ซึ่งเป็นคลังเก็บแพ็กเกจที่ไปป์ไลน์การบิลด์ซอฟต์แวร์ดึงไปใช้ เพื่อยึดสิทธิ์ระดับผู้ดูแลระบบบนเซิร์ฟเวอร์ที่องค์กรติดตั้งใช้งานเอง แล้วฝังแบ็กดอร์เอาไว้ โดยพบการโจมตีจริงระหว่างวันที่ 15 สิงหาคมถึง 8 กันยายน 2569 ทั้งนี้ช่องโหว่แต่ละตัวเพียงลำพังไม่สามารถให้สิทธิ์แอดมินได้ ต้องใช้ประกอบกัน โดย CVE-2026-42018 ทำให้ Artifactory ส่งโทเคนของผู้ใช้นิรนามภายในระบบให้ผู้ที่ยังไม่ได้ล็อกอิน แม้จะปิดการเข้าถึงแบบนิรนามไว้ก็ตาม จากนั้น CVE-2026-42016 จึงเปิดให้นำโทเคนสิทธิ์ต่ำนั้นไปแลกเป็นโทเคนที่มีขอบเขตสิทธิ์แอดมิน เพราะ Artifactory ตรวจเพียงลายเซ็นและผู้ออกโทเคน แต่ไม่ตรวจว่าโทเคนนั้นได้รับอนุญาตให้ทำอะไรได้บ้าง
ในหลายกรณีผู้โจมตีใช้เวลาจากคำขอแรกจนสร้างบัญชีแอดมินใหม่ได้ภายในไม่ถึงห้านาที เมื่อได้สิทธิ์แอดมินแล้วก็สร้างบัญชีทิ้งไว้ ติดตั้งปลั๊กอิน Groovy อันตรายผ่านกรอบการทำงานปลั๊กอินของ Artifactory เพื่อให้รันโค้ดบนเซิร์ฟเวอร์ได้ และวางแบ็กดอร์ที่เขียนด้วยภาษา Rust เพียงแต่การต่อช่องโหว่แบบนี้กระทบเซิร์ฟเวอร์เฉพาะที่ยังไม่อัปเดตเท่านั้น เพราะ JFrog ออกแพตช์ทั้งสองตัวไปก่อนช่วงที่พบการโจมตี ขณะเดียวกัน Wiz ยังพบว่าช่องโหว่ตัวที่สามคือ CVE-2026-82329 ซึ่งเป็นการข้ามการยืนยันตัวตนระดับวิกฤต ถูกใช้โจมตีแยกต่างหากและเป็นสาเหตุที่ทำให้เซิร์ฟเวอร์บนสาขาเวอร์ชันใหม่กว่ายังเสี่ยงอยู่
รายละเอียดข่าว
เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 11 กันยายน 2569 ว่า บริษัท Wiz ผู้ให้บริการด้านความมั่นคงบนคลาวด์ ได้เผยแพร่รายงานการโจมตีจริงที่ต่อช่องโหว่ใน JFrog Artifactory โดยพบเหตุการณ์ในช่วงวันที่ 15 สิงหาคมถึง 8 กันยายน 2569 ทุกกรณีที่ Wiz พบดำเนินตามรูปแบบใกล้เคียงกัน คือผู้โจมตีส่งคำขอที่ยังไม่ผ่านการยืนยันตัวตนไปยังเอนด์พอยต์สำหรับออกโทเคน แล้วได้รับโทเคนของผู้ใช้นิรนามภายในระบบกลับมา จากนั้นนำไปแลกที่เอนด์พอยต์สร้างโทเคนของ Artifactory เพื่อให้ได้โทเคนที่มีสิทธิ์แอดมิน
จุดที่ทำให้ตรวจจับยากคือ โทเคนใบที่สองยังคงชื่อผู้ใช้นิรนามเอาไว้ การกระทำระดับแอดมินที่ทำผ่านโทเคนนี้จึงปรากฏในบันทึก (log) เป็น token:anonymous แทนที่จะเป็นชื่อบัญชีจริง Wiz ระบุว่าไม่มีผู้โจมตีรายใดรายเดียวที่ลงมือทุกขั้นตอนที่พบ และในบรรดาเซิร์ฟเวอร์ที่ถูกเจาะ ผู้โจมตีสร้างบัญชีแอดมินทิ้งไว้ ติดตั้งปลั๊กอิน Groovy อันตราย และบางรายรันคำสั่งเชลล์ผ่านเอนด์พอยต์รันปลั๊กอินเพื่อสำรวจและไล่ดูไฟล์ในระบบ นอกจากนี้ยังพบตัวดรอปเปอร์ที่ดึงไฟล์ไบนารีผ่าน HTTP มาเขียนลงไดเรกทอรีที่เขียนได้ทุกคนอย่าง /tmp แล้วเปิดช่องสั่งการและควบคุม (C2) รวมถึงพบแบ็กดอร์ Rust แบบกำหนดเองในหลายกรณี
วิธีการโจมตี
การต่อช่องโหว่นี้ต้องอาศัยเซิร์ฟเวอร์ที่ได้รับผลกระทบจากทั้ง CVE-2026-42018 และ CVE-2026-42016 พร้อมกัน การปิดตัวใดตัวหนึ่งจึงตัดสายการโจมตีได้ ในช่วงเวอร์ชันที่ JFrog เผยแพร่ CVE-2026-42016 สิ้นสุดที่เวอร์ชัน 7.133.11 ทำให้สาขา 7.146 และ 7.161 อยู่นอกช่วงที่กระทบ โดย JFrog ปล่อยแพตช์ CVE-2026-42018 บนสาขา 7.146 เมื่อวันที่ 28 เมษายน และบนสาขา 7.133 เมื่อวันที่ 12 สิงหาคม ซึ่งเป็นเวลาสามวันก่อนการโจมตีที่ Wiz พบจะเริ่มขึ้น
ส่วนช่องโหว่ตัวที่สาม CVE-2026-82329 ถูกใช้โจมตีแยกต่างหากระหว่างวันที่ 1 ถึง 8 กันยายน เป็นการข้ามการยืนยันตัวตนระดับวิกฤตที่ได้คะแนน CVSS สูงถึง 9.8 พุ่งเป้าที่การตั้งค่าเริ่มต้นของ Artifactory และไม่ต้องอาศัยช่องโหว่ตัวอื่นประกอบเลย ผู้โจมตีที่ไม่ผ่านการยืนยันตัวตนแต่เข้าถึงเครือข่ายได้ สามารถยกสิทธิ์ตนเองเป็นแอดมินผ่านช่องโหว่นี้เพียงตัวเดียว บนสาขาเวอร์ชันมากถึงหกสาขาไปจนถึง 7.161 The Hacker News รายงานตั้งแต่วันที่ 1 กันยายนว่าผู้โจมตีเริ่มสร้างโทเคนแอดมินให้ตัวเองผ่านช่องโหว่นี้หลัง JFrog เปิดเผยได้ไม่กี่วัน ต่อมา CISA ก็บรรจุช่องโหว่นี้เข้าแคตตาล็อกช่องโหว่ที่ถูกใช้โจมตีจริง (KEV) เมื่อวันที่ 2 กันยายน และตั้งเส้นตายให้หน่วยงานรัฐบาลกลางแก้ไขภายในวันที่ 5 กันยายน
บริษัท Fastly ผู้ให้บริการเครือข่ายส่งข้อมูล (CDN) ระบุในบทวิเคราะห์ว่าโค้ดโจมตีสาธารณะปรากฏขึ้นเมื่อวันที่ 1 กันยายน ตามด้วยการสแกนหาเป้าหมาย และนับความพยายามใช้โจมตีบนแพลตฟอร์มของตนได้ราว 406,000 ครั้งในวันที่ 2 กันยายนซึ่งเป็นวันที่หนาแน่นที่สุด โดยย้ำว่าตัวเลขนี้คือความพยายามที่เห็นในทราฟฟิก ไม่ใช่จำนวนเครื่องที่ถูกเจาะสำเร็จ บนเซิร์ฟเวอร์ที่ถูกยึดผ่านช่องโหว่นี้ Wiz พบว่าผู้โจมตีอ่านการตั้งค่าระบบและในหลายกรณีขโมยกุญแจสำหรับให้โหนดเข้าร่วมคลัสเตอร์ (cluster join key) ซึ่งเป็นความลับร่วมที่โหนดของ Artifactory ใช้ลงทะเบียนกันเอง
ผลกระทบ
ผู้ที่ได้รับผลกระทบคือองค์กรที่ติดตั้ง Artifactory ใช้งานเอง (self-hosted) เท่านั้น ส่วนอินสแตนซ์บนคลาวด์ JFrog ระบุว่าไม่ต้องดำเนินการใด ๆ ประเด็นสำคัญคือการอัปเดตซอฟต์แวร์ไม่ได้ลบร่องรอยที่ผู้โจมตีทิ้งไว้ก่อนหน้า บัญชีแอดมินที่ถูกสร้างขึ้นจะไม่หายไปเมื่ออัปเดต ซึ่ง Wiz พบทั้งที่มาจากการต่อช่องโหว่สองตัวและจาก CVE-2026-82329 นอกจากนี้การอัปเกรดก็ไม่เปลี่ยนกุญแจ join key ที่ถูกขโมยไปแล้ว สำหรับ CVE-2026-82329 นั้น Fastly ถึงกับแนะนำให้ถือว่าเซิร์ฟเวอร์ที่เคยเปิดสู่ภายนอกทุกเครื่องถูกเจาะไปแล้ว โดยระบุว่า “แพตช์ไม่ได้เพิกถอนโทเคนที่ถูกสร้างขึ้นไปแล้ว”
คำแนะนำ
ให้อัปเกรด Artifactory แบบ self-hosted ไปยังเวอร์ชันที่แก้แล้วตามสาขาที่ใช้ ตามที่ระบุในประกาศความมั่นคงของ JFrog สำหรับผู้ที่ยังอัปเกรดไม่ได้ทันที JFrog เผยแพร่วิธีบรรเทาสำหรับ CVE-2026-82329 ด้วยการสุ่มค่าหนึ่งขึ้นมาเพิ่มเป็น join key อีกดอกใน system.yaml เพื่อให้ระบบยอมรับเฉพาะกุญแจของตนเองตอนบริการลงทะเบียน ทั้งนี้ไม่มีทางเลือกบรรเทาชั่วคราวสำหรับช่องโหว่สองตัวที่ต่อกันในประกาศหรือรายงานที่มี
หลังอัปเดต Fastly แนะนำให้หมุนกุญแจ join key ของแพลตฟอร์ม เพิกถอนโทเคนเข้าถึงที่ออกตั้งแต่วันที่ 28 สิงหาคมเป็นต้นมา และตรวจสอบบัญชีแอดมิน คลังแพ็กเกจ และการเปลี่ยนแปลงการตั้งค่าย้อนหลัง สัญญาณที่ชัดที่สุดคือบัญชีที่ทำสิ่งเกินสิทธิ์ของตน เช่น ผู้ใช้นิรนามภายในหรือบัญชีสิทธิ์ต่ำสร้างโทเคน ไล่ดูรายชื่อผู้ใช้ หรืออ่าน–เขียนปลั๊กอิน จากนั้นให้มองหาบัญชีแอดมินที่ไม่มีใครตั้งใจสร้าง โดยส่วนใหญ่ที่ Wiz พบใช้ชื่อแนวโค้ดสาธิตอย่าง 0xTerror หรือขึ้นต้นด้วย svc_ และ labadmin_ ตามด้วยอักขระสุ่ม บางบัญชีจงใจตั้งชื่อให้กลมกลืน เช่น jfrog-distribution, jfrog-insight และ repo-service ซึ่งรายงานของ Wiz มีรายการที่อยู่ของผู้โจมตีและค่าแฮชของเพย์โหลดประกอบไว้
ตารางเวอร์ชันที่แก้แล้วตามข้อมูลของ JFrog มีดังนี้
| CVE | ลักษณะช่องโหว่ | เวอร์ชันที่กระทบ | แก้ในเวอร์ชัน |
|---|---|---|---|
| CVE-2026-42018 | ส่งโทเคนผู้ใช้นิรนามภายในให้ผู้ที่ยังไม่ล็อกอิน | ต่ำกว่า 7.111.20 และต่ำกว่า 7.117.27, 7.125.19, 7.133.28, 7.146.8 บนสาขานั้น | 7.111.20, 7.117.27, 7.125.19, 7.133.28, 7.146.8 |
| CVE-2026-42016 | ให้แลกโทเคนสิทธิ์ต่ำเป็นโทเคนสิทธิ์แอดมิน | ก่อน 7.133.11 | 7.133.11 |
| CVE-2026-82329 | ให้ผู้โจมตีที่ไม่ยืนยันตัวตนได้สิทธิ์แอดมินด้วยตัวเดียว | ต่ำกว่า 7.111.21 และต่ำกว่า 7.117.28, 7.125.20, 7.133.29, 7.146.38, 7.161.20 บนสาขานั้น | 7.111.21, 7.117.28, 7.125.20, 7.133.29, 7.146.38, 7.161.20 |
พึงทราบว่าข้อมูลบางส่วนยังมีน้อยและไม่ชัดเจน JFrog ระบุเวอร์ชันที่แก้ CVE-2026-42016 ไว้ตัวเดียวคือ 7.133.11 โดยไม่ได้แยกเป็นรายสาขา และประกาศไม่ได้บอกว่าบิลด์ใหม่กว่าบนสาขาเก่าอย่าง 7.117.28 ปิดช่องโหว่นี้ด้วยหรือไม่ ซึ่ง The Hacker News ระบุว่าได้สอบถาม JFrog ในประเด็นนี้แล้ว รวมถึงถาม Wiz ว่าเซิร์ฟเวอร์ที่ถูกเจาะรันเวอร์ชันใดบ้าง
