NRDAX
CLI Submit

← registry

NRDAX-T0099 - Half-Open Handshake Slowloris

Connection exhaustion (also memory amplification) · P2P and gossip · no bound · active · first seen 2026-07-01

provenance: Reproduced in NullRabbit's attack-reproduction pipeline

mechanism

IC quic_transport half-open QUIC handshake memory pin (IC_QUIC_HALFOPEN_PIN): a burst of QUIC v1 Initial packets (distinct SCID each) whose CRYPTO frame declares a large TLS handshake length (4096) but delivers a truncated ClientHello (~200 B) leaves rustls 'incomplete, waiting', so each `Connecting` future lives to the pre-handshake timeout pinning ~100 KiB/conn. No Retry (EndpointConfig::default()), no per-IP UDP cap, mTLS only after state is committed. Measured on the real replica (release-2026-05-29_04-44-base, commit a47e543, 2026-06-02): n=200 -> +25.5 MiB (~128 KiB/conn), n=1000 -> +129 MiB (~132 KiB/conn), n=3000 -> +278 MiB (abs 420 MiB, ~95 KiB/conn); across 12,200 total connections ZERO were rejected at admission. MEDIUM/5.9 (bounded only by IC's default-deny firewall + 512 GiB replica RAM, not by any transport control). NullRabbit measurement; chains/ic/findings/IC_QUIC_HALFOPEN_PIN.

live exposure

No exposure data. Slashr ↗ has no risk signal mapped to this technique yet — absence of data is not absence of exposure.

research

In-depth write-ups of this attack on nullrabbit.ai.

instances (6)

chainprimitivefidelityoriginreproducer (bundle)source
ic ic_quic_halfopen_pin lab NullRabbit Labs ic_quic_halfopen_pin github.com ↗
iota iota_http_tls_halfopen_plaintext_grpc lab NullRabbit Labs iota_http_tls_halfopen_plaintext_grpc github.com ↗
near near_handshake_preauth_pending_starvation lab NullRabbit Labs near_handshake_preauth_pending_starvation -
solana sol_tpu_quic_handshake_flood lab reverse-engineered-cve sol_tpu_quic_handshake_flood neodyme.io ↗
solana sol_tpu_quic_slowloris lab reverse-engineered-cve sol_tpu_quic_slowloris neodyme.io ↗
xrp rippled_tls_slow_handshake lab NullRabbit Labs rippled_tls_slow_handshake github.com ↗

related (Connection exhaustion)

cite

https://nrdax.com/techniques/NRDAX-T0099

plain

NRDAX Registry. Technique NRDAX-T0099.

bibtex
@misc{nrdax_NRDAX_T0099,
  title = {Half-Open Handshake Slowloris (NRDAX-T0099)},
  howpublished = {NRDAX Registry},
  url = {https://nrdax.com/techniques/NRDAX-T0099},
}
json (csl)
{
  "id": "nrdax-NRDAX-T0099",
  "type": "dataset",
  "title": "Half-Open Handshake Slowloris (NRDAX-T0099)",
  "URL": "https://nrdax.com/techniques/NRDAX-T0099",
  "publisher": "NRDAX Registry"
}
badge

NRDAX-T0099 in the NRDAX registry

[![NRDAX-T0099 in the NRDAX registry](https://nrdax.com/badge/NRDAX-T0099.svg)](https://nrdax.com/techniques/NRDAX-T0099-half-open-handshake-slowloris)

use from the CLI

Retrieve or cite this technique from a script or the terminal with the NRDAX Python library & CLI.

Retrieve this technique
nrdax get NRDAX-T0099
Cite it (BibTeX)
nrdax cite NRDAX-T0099 --format bibtex

CLI guide → GitHub ↗