สรุปสั้น
ช่องโหว่ระดับวิกฤตในไลบรารี RingRTC ซึ่งเป็นส่วนประกอบระบบโทรของแอป Signal ทั้งบนมือถือและเดสก์ท็อป เปิดทางให้ผู้ร่วมสายที่ประสงค์ร้ายยังรับเสียงจากอีกฝ่ายต่อได้ แม้อีกฝ่ายจะกดวางสายแล้ว ช่องโหว่นี้มีรหัส CVE-2026-113380 กระทบ RingRTC ก่อนเวอร์ชัน 2.72.0 และได้คะแนน CVSS v4.0 เท่ากับ 9.3 สาเหตุมาจาก state machine ที่ควบคุมสถานะการโทรมีคิวเหตุการณ์จำกัดที่ 256 รายการ ผู้ร่วมสายจึงส่งเหตุการณ์จนคิวเต็ม ทำให้ขั้นตอนปิดสายฝั่งเหยื่อหยุดกลางทาง การเชื่อมต่อและสัญญาณเสียงจึงไม่ถูกรื้อออกทั้งหมด
ที่น่ากังวลคือบทสนทนาที่เกิดขึ้นหลังเหยื่อคิดว่าวางสายแล้วอาจรั่วออกไป แต่การโจมตีต้องเป็นผู้ร่วมสายเอง ไม่ใช่บุคคลภายนอกที่ดักฟังเฉย ๆ คำอธิบายทางการยังไม่ยืนยันว่าภาพวิดีโอค้างอยู่ด้วยหรือไม่ และไม่ระบุว่าแอปฝั่งเหยื่อแสดงผลอย่างไรระหว่างนั้น การแก้ไขเขียนโดยนักพัฒนาของ Signal เมื่อ 4 กันยายน 2569 และออกใน RingRTC 2.72.0 ผู้ใช้ควรอัปเดต Signal เป็นรุ่นล่าสุด ส่วนนักพัฒนาที่ฝัง RingRTC ไว้ในแอปของตนควรอัปเกรดเป็น 2.72.0 ขึ้นไป
รายละเอียดข่าว
เว็บไซต์ GBHackers รายงานเมื่อวันที่ 22 ตุลาคม 2569 ว่าพบช่องโหว่ระดับวิกฤตในไลบรารีการโทร RingRTC ของ Signal ที่ทำให้ผู้ร่วมสายที่ประสงค์ร้ายยังรับเสียงต่อได้หลังผู้ใช้อีกคนพยายามวางสาย MITRE เผยแพร่รายละเอียดช่องโหว่เมื่อวันที่ 20 ตุลาคม 2569 และจัดประเภทเป็น CWE-754 การตรวจสอบเงื่อนไขผิดปกติหรือข้อยกเว้นไม่เหมาะสม
RingRTC เป็นไลบรารีที่ให้ส่วนประกอบการโทรทั้งแอป Signal บนมือถือและเดสก์ท็อป การวางสายที่เชื่อถือได้จึงเป็นประเด็นความเป็นส่วนตัวสำคัญสำหรับแอปที่คนใช้เพราะต้องการความเป็นส่วนตัวสูง ข้อมูลเชิงลึกมาจากบันทึกของนักวิจัยที่ใช้ชื่อ Imahian บน GitHub ซึ่งระบุว่าฉากการโจมตีคือผู้ร่วมสายที่ประสงค์ร้าย ไม่ใช่ผู้สังเกตการณ์ที่ไม่เกี่ยวข้องดักฟังการสื่อสาร
ข้อจำกัดของหลักฐานที่ควรทราบคือ ช่วงเวอร์ชันที่กระทบกำหนดตามเวอร์ชันของไลบรารี ไม่ใช่เวอร์ชันของแอป และรายงานที่อ้างถึงไม่ได้ยืนยันว่าแอป Signal รุ่นใดบ้างที่ได้รับผลกระทบ จึงไม่ควรสรุปว่าทุกแพลตฟอร์มมีความเสี่ยงเท่ากัน นอกจากนี้ยังไม่มีรายงานการโจมตีจริง และ Signal ยังไม่ได้ออกแถลงการณ์เกี่ยวกับช่องโหว่นี้ในต้นฉบับ
รายละเอียดช่องโหว่
ช่องโหว่อยู่ใน finite-state machine (FSM) ที่ประสานการเปลี่ยนสถานะของการโทรและการเชื่อมต่อ FSM เหล่านี้มีคิวเหตุการณ์ที่จำกัดขนาดไว้ 256 รายการ ผู้ร่วมสายจากระยะไกลสามารถส่งเหตุการณ์จนคิวของการโทรเต็ม ซึ่งจะไปขัดขวางขั้นตอนปิดสายฝั่งเครื่องของเหยื่อเมื่อเหยื่อกดปุ่มวางสาย
การวิเคราะห์แพตช์ชี้ว่าลำดับการปิดสายเดิมอาจหยุดก่อนเวลาเมื่อการทำงานขั้นใดขั้นหนึ่งล้มเหลว คิวที่เต็มทำให้ส่งเหตุการณ์ปิดสายเข้าไปไม่ได้ ขณะที่ความล้มเหลวอื่น เช่น การแจ้งแอปพลิเคชันไม่สำเร็จ ก็ขัดจังหวะการเก็บกวาดที่เหลือ ผลคือการเชื่อมต่อและ media track ที่อยู่เบื้องหลังอาจไม่ถูกรื้อออกทั้งหมด ปัญหานี้จึงไม่ใช่คิวที่โตไม่สิ้นสุด แต่เป็นคิวที่มีขนาดจำกัด บวกกับเงื่อนไขผิดปกติที่ทำให้การปิดสายไม่จบ
การแก้ไขใน RingRTC 2.72.0 เพิ่ม flag การปิดสายแยกต่างหากที่ state machine ตรวจเองโดยไม่ต้องพึ่งเหตุการณ์ในคิว กำหนดเวลารอการปิด FSM ไม่เกิน 5 วินาที และให้การเก็บกวาดเดินต่อได้แม้ขั้นตอนปิดสายบางส่วนล้มเหลว Signal ยังเพิ่มชุดทดสอบที่จำลองคิวเต็มและการแจ้งเตือนล้มเหลว เพื่อยืนยันว่าการวางสายจะปิด peer connection ปิดเสียงขาออก และล้างตัวรับแพ็กเก็ต RTP
| รายการ | รายละเอียด |
|---|---|
| CVE | CVE-2026-113380 |
| คะแนน | CVSS v4.0 9.3 (วิกฤต) |
| ประเภท | CWE-754 Improper Check for Unusual or Exceptional Conditions |
| กระทบ | RingRTC ก่อน 2.72.0 |
| แก้ไขแล้ว | RingRTC 2.72.0 (แพตช์ลงวันที่ 4 ก.ย. 2569) |
| เงื่อนไข | ผู้โจมตีต้องเป็นผู้ร่วมสาย |
ผลกระทบ
Signal ถูกใช้แพร่หลายในกลุ่มที่ต้องการการสื่อสารปลอดภัยสูง ทั้งนักข่าว นักกิจกรรม เจ้าหน้าที่รัฐ และผู้บริหาร ซึ่งเป็นกลุ่มที่ผู้ก่อภัยระดับรัฐเคยเล็งมาแล้วหลายครั้ง (โพสต์ 06/186 และ 08/158) ช่องโหว่ที่ทำให้อีกฝ่ายฟังต่อได้หลังวางสายจึงตรงกับความเสี่ยงของกลุ่มนี้โดยตรง เพราะผู้ใช้มักพูดเรื่องอ่อนไหวหลังวางสายโดยเชื่อว่าไมโครโฟนปิดแล้ว อย่างไรก็ตาม การโจมตีต้องเริ่มจากการอยู่ในสายเดียวกับเหยื่อ ซึ่งจำกัดวงให้เป็นการโจมตีเฉพาะเป้าหมาย ไม่ใช่การดักฟังวงกว้าง ช่องโหว่ยังกระทบแอปอื่นที่ฝัง RingRTC ไว้ด้วย ซึ่งต้องอัปเกรดไลบรารีเอง
คำแนะนำ
- อัปเดตแอป Signal บนมือถือและเดสก์ท็อปเป็นรุ่นล่าสุด และเปิดการอัปเดตอัตโนมัติ
- องค์กรที่ใช้ Signal สำหรับการสื่อสารอ่อนไหว ตรวจผ่าน MDM ว่าเครื่องของบุคลากรใช้รุ่นล่าสุดแล้ว
- นักพัฒนาที่ฝัง RingRTC ในแอปของตนให้อัปเกรดเป็น 2.72.0 ขึ้นไป
- ระวังการรับสายจากผู้ติดต่อที่ไม่รู้จักหรือน่าสงสัย และหลังวางสายให้ตรวจว่าตัวบ่งชี้การใช้ไมโครโฟนของระบบปฏิบัติการดับแล้ว ก่อนพูดเรื่องอ่อนไหว
- ถ้าจำเป็นต้องคุยเรื่องอ่อนไหวหลังวางสาย ให้ปิดแอปหรือเพิกถอนสิทธิ์ไมโครโฟนชั่วคราวจนกว่าจะยืนยันว่าอัปเดตแล้ว
