cd /news/ai-safety/ringrtc-signal-flooded-call-event-qu… Β· home β€Ί topics β€Ί ai-safety β€Ί article
[ARTICLE Β· art-155563] src=github.com β†— pub= topic=ai-safety verified=true sentiment=↓ negative

RingRTC (Signal): Flooded Call Event Queue Blocks Local Hang-Up

RingRTC, the calling library behind Signal voice and video calls, carries a critical vulnerability tracked as CVE-2026-113380 with a CVSS score of 9.3 in versions before 2.72.0, allowing a remote call peer to flood the call's finite-state-machine event queue so a local hang-up is never processed and the audio track, possibly video, keeps flowing after the user believes the call ended. The flaw is classified as CWE-754, improper check for unusual or exceptional conditions, and affects every Signal client embedding an older RingRTC build across Android, iOS, and Desktop until the client ships the fixed library. RingRTC 2.72.0 fixes the queue handling by giving critical control events a priority lane and rate-limiting peer-originated events, and Signal users are advised to install the latest app store update.

read2 min views1 publishedOct 22, 2026
RingRTC (Signal): Flooded Call Event Queue Blocks Local Hang-Up
Image: Michielbdejong (auto-discovered)
Field Value
Severity Critical β€” CVSS 9.3
Product RingRTC (Signal's calling library), before 2.72.0 β€” the library behind Signal voice and video calls
Type Improper check for unusual or exceptional conditions (CWE-754)
Vector Remote β€” a call peer floods the call's FSM event queue so a local hang-up event is never processed; the call's audio (and possibly video) track stays alive after the user hangs up
  • RingRTC before 2.72.0. That covers every Signal client embedding an older RingRTC build β€” Android, iOS, and Desktop β€” until the client ships the fixed library.

A local hang-up is not a kill switch: it is just one more event placed at the back of the call's finite-state-machine event queue. The remote peer is trusted with that queue β€” there is no rate limit on peer-originated events and no priority lane for hang-up. Flood the queue with junk and the hang-up waits behind attacker noise forever, so the call (microphone, possibly camera) is never torn down.

def enqueue(event):
    call_fsm.queue.append(event)          # no flood guard, no priority

peer.flood(call_fsm.queue)                # junk events pile up...
enqueue("hangup")                         # ...so hang-up sits at the back
call_fsm.drain()                          # processes junk first β€” hang-up never runs

def enqueue_fixed(event):
    if event == "hangup":
        call_fsm.queue.appendleft(event)  # critical events jump the queue
    elif peer_rate_ok():
        call_fsm.queue.append(event)      # peer events rate-limited
  1. The attacker starts a normal Signal call with the victim.
  2. From their side they saturate the call's FSM event queue with junk events.
  3. The victim taps hang-up; the event lands at the back of a full queue and is never processed.
  4. The call's audio track β€” and possibly the video track β€” keeps flowing to the attacker while the victim believes the call ended.

The accompanying poc.py demonstrates the pattern safely: a queue model where a flood buries a hang-up event versus a model where hang-up always jumps the queue. Purely synthetic, offline, no network, no real calls β€” no exploit.

Educational material only. Do not use against systems you do not own or have explicit permission to test.

── more in #ai-safety 4 stories Β· sorted by recency
── more on @ringrtc 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/ringrtc-signal-flood…] indexed:0 read:2min 2026-10-22 Β· β€”