빨간색 버튼이 마지막이 아니었습니다
Signal의 통화 인프라, 특히 RingRTC 라이브러리의 치명적인 결함으로 인해 통화가 완전히 종료되지 않고 오디오 및 잠재적으로 비디오가 상대방에게 계속 스트리밍될 수 있었습니다. 사용자가 통화 종료 버튼을 눌렀을 때 통화가 끝났다고 생각했음에도 불구하고 마이크와 카메라가 계속 활성화된 상태로 유지될 수 있었습니다. CVE-2026-113380으로 추적된 이 취약점은 CVSS 4.0 점수 9.3(치명적)을 기록했으며, 조용한 감시 위험을 노출했습니다.
이 취약점을 악용하려면 공격자가 이미 통화 중이어야 했습니다. 즉, 낯선 사람이 몰래 도청을 시작하거나 Signal 계정을 광범위하게 침해하는 메커니즘은 아니었습니다. 이 버그의 범위는 통화 종료 과정으로 엄격히 제한되었으며, Signal 메시지, 계정 인프라 및 강력한 종단간 암호화는 영향을 받지 않았습니다. 이 결함이 실제로 악용되었다는 증거는 없습니다.
근본적인 문제는 RingRTC의 FSM(Finite State Machine) 큐에서 발생했습니다. 이 큐는 들어오는 피어 이벤트에 대한 속도 제한이 없었고 종료 신호를 위한 우선순위 경로도 없었습니다. 공격자는 이 큐를 범람시켜 로컬 통화 종료 이벤트를 차단하고 미디어 스트림을 계속 활성화할 수 있었습니다. Signal은 9월 4일에 이 문제를 해결하여 통화가 완전히 종료되도록 수정 사항을 커밋했으며, 10월 20일에 CVE가 공개적으로 할당되기 전에 Android, iOS 및 Desktop 클라이언트에 조용히 배포했습니다.
혼잡한 큐가 어떻게 통화 종료를 방해했는가
Signal의 오픈 소스 통화 라이브러리인 RingRTC는 Android, iOS 및 데스크톱 전반에서 음성 및 영상 통화를 지원합니다. CVE-2026-113380으로 추적된 이 치명적인 결함의 원인은 256개의 항목을 수용할 수 있는 RingRTC의 제한된 유한 상태 머신 이벤트 큐에 있었습니다.
이 설계는 치명적인 사각지대를 만들었습니다. 피어가 생성한 이벤트가 큐를 쉽게 범람시킬 수 있었던 반면, 사용자가 빨간색 버튼을 누르는 로컬 통화 종료 이벤트에는 우선순위가 없었습니다. 대신 종료 이벤트는 일반 통화 이벤트 뒤에서 대기해야 했으며 즉각적인 통화 종료를 강제할 수 없었습니다.
종료 프로세스가 중단되면 마이크 스트림과 잠재적으로 카메라 스트림이 상대방에게 계속 전송되었습니다. 원격 피어는 통화가 완전히 종료되는 것을 효과적으로 방해하여 오디오와 비디오가 계속 흐르도록 할 수 있었습니다. 이 취약점은 CVSS 4.0 점수 9.3을 받아 치명적인 심각성을 나타냈습니다. 우려스러운 일이지만, 실제 악용 사례에 대한 증거는 없으며 이 결함은 활성 참가자가 있어야만 트리거될 수 있었습니다.
조용한 패치, 그리고 공개 경고
Signal은 9월 4일 RingRTC에 수정 사항을 커밋했으며, 변경 로그에는 "코너 케이스에서 통화가 완전히 종료되도록 보장"이라는 매우 절제된 문구가 포함되었습니다. 독립적인 종료 처리와 강제 타임아웃을 추가한 이 패치는 이후 몇 주 동안 Android, iOS 및 데스크톱 빌드에 배포되었습니다. 이 조용한 업데이트가 투명성에 대한 의문을 제기할 수 있지만, 이는 악의적인 의도의 증거가 아닙니다. 치명적인 취약점에 대한 신속하고 비공개적인 패치는 공개 전 표준 관행입니다.
전체적인 상황은 10월 20일 CVE-2026-113380이 공개되면서 드러났습니다. 이 치명적인(CVSS 9.3) 취약점은 통화 종료 결함의 심각성을 확인시켜 주었으며, 조용한 배포의 정당성을 입증했습니다. RingRTC 2.72.0 및 이후의 Signal 빌드에는 큐 범람이 종료 이벤트를 차단하지 못하도록 하는 수정 사항이 포함되어 있습니다. 라이브러리에 대한 자세한 기술 정보는 signalapp/ringrtc GitHub 저장소를 참조하십시오.
사용자는 빨간색 버튼을 눌렀을 때 통화가 실제로 종료되도록 Android, iPhone, 데스크톱 등 모든 플랫폼에서 Signal을 즉시 업데이트해야 합니다. 실제 악용 사례에 대한 증거는 없으며, 이 문제는 활성 통화 참가자에게만 영향을 미쳤지만, 이번 사건은 실시간 통신에서 신뢰할 수 있는 통화 종료 기능을 구축하는 것이 보기보다 어렵다는 반복적인 과제를 강조합니다. FaceTime과 Google Duo도 유사한 문제를 겪은 바 있습니다.
이 글이 마음에 드셨나요? 매일 아침 이런 글을 메일로 받아보세요.
하루 한 통 · 두 번의 클릭으로 구독 취소 · 제3자 추적 없음
통화에서 가장 어려운 부분은 통화를 종료하는 것일 수 있습니다
이번 RingRTC 에피소드는 통화 종료가 놀라울 정도로 복잡하고 보안상 중요한 상태 전환이라는 점을 극명하게 상기시켜 줍니다. 이는 과거 통신 앱들이 결승선에서, 혹은 경주가 시작되기도 전에 비틀거렸던 사건들을 떠올리게 합니다. 2019년 Apple의 FaceTime은 수신자가 전화를 받기 전에 기기의 오디오가 노출되는 치명적인 결함이 발생하여, Apple은 문제가 해결될 때까지 Group FaceTime 기능을 비활성화해야 했습니다.
같은 해, Google의 Project Zero는 Signal for Android, Google Duo, Facebook Messenger에서 통화 연결 취약점을 발견했습니다. 당시 버그들은 발신자가 강제로 연결을 시도할 수 있게 했습니다. 그러나 이번 RingRTC 결함은 확연히 다른 문제입니다. 결정적인 종료 스위치 역할을 해야 할 통화 종료 버튼이 혼잡한 이벤트 대기열로 인해 작동하지 않는 teardown failure(연결 해제 실패) 문제입니다.
엔지니어링 측면에서의 교훈은 명확합니다. 실시간 통신 프로토콜에서 설정 및 종료 단계는 매우 취약합니다. 원격 피어는 종종 예측할 수 없는 방식으로 이벤트를 생성할 수 있으며, 이러한 이벤트가 중요한 보안 기능을 방해하도록 허용해서는 안 됩니다. 개발자는 hang-up function(통화 종료 기능)을 보호받는 우선순위가 높은 킬 스위치로 취급해야 합니다. 사용자 또한 통화 후 모바일 기기의 마이크 및 카메라 표시등을 확인하여 대화가 실제로 종료되었는지 확인하는 습관을 길러야 합니다.
자주 묻는 질문
Signal 통화 취약점은 무엇이었나요?
RingRTC의 결함으로 인해 통화 중인 상대방이 이벤트 대기열을 과부하시켜 사용자의 통화 종료 시도가 완전히 이루어지지 않게 할 수 있었습니다.
낯선 사람이 Signal 통화 버그를 사용하여 도청할 수 있었나요?
아니요. 이 결함은 공격자가 이미 활성 통화에 참여 중이어야 가능했으며, 외부인이 무작위로 도청할 수 있는 것은 아니었습니다.
Signal 메시지나 암호화에 영향이 있었나요?
아니요. 보고된 문제는 통화 연결 해제 및 미디어 스트림에 관한 것이었으며, Signal의 메시지 암호화, 계정 또는 데이터베이스와는 관련이 없습니다.
Signal 사용자는 어떻게 스스로를 보호할 수 있나요?
모든 기기에서 Signal을 최신 버전으로 업데이트하세요. 모바일에서는 통화 종료 후 마이크 및 카메라 개인정보 보호 표시등을 확인하세요.

