NRDAX-T0246 - Rate-Limit Key Confusion
Connection exhaustion · RPC and public API · mis-scoped bound · active · first seen 2026-07-09
provenance: Reproduced in NullRabbit's attack-reproduction pipeline
mechanism
IC ingress-pool per-NodeId quota mis-key (IC_N1_INGRESS_POOL_QUOTA_MISKEY): every HTTP-arriving ingress message buckets under the carrier replica's own NodeId instead of the signing principal (call.rs:391), so a single shared per-NodeId quota gates ALL public HTTP ingress. Submitting 10001 small signed HTTP ingress POSTs trips exceeds_limit (measured 0.04s at production caps 10000 / 100 MB); the handler's RemoveFromUnvalidated then purges 100% of legit unvalidated HTTP ingress on that replica at the next on_state_change (~200ms). PUBLIC reach; ~50k signed-ingress/s keeps a replica wiped; ~40 MB total bandwidth pins a 40-replica subnet. NullRabbit measurement; chains/ic/findings/IC_N1_INGRESS_POOL_QUOTA_MISKEY.
live exposure
No exposure data. Slashr ↗ has no risk signal mapped to this technique yet — absence of data is not absence of exposure.
instances (1)
| chain | primitive | fidelity | origin | reproducer (bundle) | source |
|---|---|---|---|---|---|
| ic | ic_ingress_pool_quota_miskey | lab | NullRabbit Labs | ic_ingress_pool_quota_miskey | github.com ↗ |
related (Connection exhaustion)
cite
https://nrdax.com/techniques/NRDAX-T0246
NRDAX Registry. Technique NRDAX-T0246.
@misc{nrdax_NRDAX_T0246,
title = {Rate-Limit Key Confusion (NRDAX-T0246)},
howpublished = {NRDAX Registry},
url = {https://nrdax.com/techniques/NRDAX-T0246},
} {
"id": "nrdax-NRDAX-T0246",
"type": "dataset",
"title": "Rate-Limit Key Confusion (NRDAX-T0246)",
"URL": "https://nrdax.com/techniques/NRDAX-T0246",
"publisher": "NRDAX Registry"
} [](https://nrdax.com/techniques/NRDAX-T0246-rate-limit-key-confusion)
use from the CLI
Retrieve or cite this technique from a script or the terminal with the NRDAX Python library & CLI.
nrdax get NRDAX-T0246 nrdax cite NRDAX-T0246 --format bibtex