CVE-2026-66754
Rouille 0.1.6 - 3.6.2 Reachable Assertion DoS via remove_prefix percent-encoding
Rouille 0.1.6 through 3.6.2 contains a reachable assertion vulnerability in the Request::remove_prefix function that allows remote unauthenticated attackers to crash the server by sending a crafted percent-encoded URL. Attackers can send a request whose decoded path matches a configured prefix while the raw percent-encoded path does not, causing the assert! to fail and triggering either a 500 error or full process termination depending on the panic configuration.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.2
Rouille 0.1.6 - 3.6.2 Reachable Assertion DoS via remove_prefix percent-encoding
Rouille 0.1.6 through 3.6.2 contains a reachable assertion vulnerability in the Request::remove_prefix function that allows remote unauthenticated attackers to crash the server by sending a crafted percent-encoded URL. Attackers can send a request whose decoded path matches a configured prefix while the raw percent-encoded path does not, causing the assert! to fail and triggering either a 500 error or full process termination depending on the panic configuration.
- Record
CVE-2026-66754- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-617
- Updated
- 2026-11-02
EUVDEUVD-2026-49888
8.2
Rouille 0.1.6 through 3.6.2 contains a reachable assertion vulnerability in the Request::remove_prefix function that allows remote unauthenticated attackers to crash the server by sending a crafted percent-encoded URL. Attackers can send a request whose decoded path matches a configured prefix while the raw percent-encoded path does not, causing the assert! to fail and triggering either a 500 error or full process termination depending on the panic configuration.
- Record
EUVD-2026-49888- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-mrg5-7f6c-r28q
8.2
Rouille 0.1.6 through 3.6.2 contains a reachable assertion vulnerability in the Request:...
Rouille 0.1.6 through 3.6.2 contains a reachable assertion vulnerability in the Request::remove_prefix function that allows remote unauthenticated attackers to crash the server by sending a crafted percent-encoded URL. Attackers can send a request whose decoded path matches a configured prefix while the raw percent-encoded path does not, causing the assert! to fail and triggering either a 500 error or full process termination depending on the panic configuration.
- Record
GHSA-mrg5-7f6c-r28q- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-617
- Updated
- 2026-11-02
NVD
8.2
Rouille 0.1.6 through 3.6.2 contains a reachable assertion vulnerability in the Request::remove_prefix function that allows remote unauthenticated attackers to crash the server by sending a crafted percent-encoded URL. Attackers can send a request whose decoded path matches a configured prefix while the raw percent-encoded path does not, causing the assert! to fail and triggering either a 500 error or full process termination depending on the panic configuration.
- Record
CVE-2026-66754- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 5.9 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-617
- Updated
- 2026-11-02
OSV
8.2
Rouille 0.1.6 - 3.6.2 Reachable Assertion DoS via remove_prefix percent-encoding
Rouille 0.1.6 through 3.6.2 contains a reachable assertion vulnerability in the Request::remove_prefix function that allows remote unauthenticated attackers to crash the server by sending a crafted percent-encoded URL. Attackers can send a request whose decoded path matches a configured prefix while the raw percent-encoded path does not, causing the assert! to fail and triggering either a 500 error or full process termination depending on the panic configuration.
- Record
CVE-2026-66754- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-617
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-66754
8.2
Rouille 0.1.6 through 3.6.2 contains a reachable assertion vulnerability in the Request::remove_prefix function that allows remote unauthenticated attackers to crash the server by sending a crafted percent-encoded URL. Attackers can send a request whose decoded path matches a configured prefix while the raw percent-encoded path does not, causing the assert! to fail and triggering either a 500 error or full process termination depending on the panic configuration.
- Record
DEBIAN-CVE-2026-66754- CVSS 4.0
- 8.2 High
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-02
Show 4 moreShow less
OSVopenSUSE-SU-2026:11527-1 No score
sccache-0.17.0~1-2.1 on GA media
These are all security issues fixed in the sccache-0.17.0~1-2.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11527-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21982-1 No score
Security update for sccache
This update for sccache fixes the following issues:
- CVE-2024-12224: idna: idna accepts Punycode labels that do not produce any non-ASCII when decoded (bsc#1243868).
- CVE-2026-25541: bytes: integer overflow in 'BytesMut:reserve' can lead to undefined behavior and crashes (bsc#1274146).
- CVE-2026-25727: time: parsing of user-provided input by the RFC 2822 date parser can lead to stack exhaustion (bsc#1257923).
- CVE-2026-41676: openssl:
Deriver:deriveandPkeyCtxRef:derivecan overflow short buffers on OpenSSL 1.1.1 (bsc#1270206). - CVE-2026-41677: openssl: out-of-bounds read in PEM password callback when returning an oversized length in rust- openssl crate (bsc#1270559).
- CVE-2026-41678: openssl: incorrect bounds assertion in aes key wrap in rust-openssl crate (bsc#1270693).
- CVE-2026-41681: openssl: MdCtxRef::digest_final() writes past caller buffer with no length check in rust-openssl crate (bsc#1270736).
- CVE-2026-41898: openssl: unchecked callback-returned length in PSK and cookie generate trampolines can leak adjacent memory in rust-openssl crate (bsc#1270869).
- CVE-2026-42327: openssl: arbitrary code execution via specially crafted certificate in rust-openssl crate (bsc#1270512).
- CVE-2026-44662: openssl: heap buffer overflow when encrypting with AES key-wrap-with-padding in rust-openssl crate (bsc#1270938).
- CVE-2026-45784: openssl: out-of-bounds write in
CipherCtxRef::cipher_update_inplacefor AES-KW-PAD ciphers in rust- openssl crate (bsc#1270948). - CVE-2026-66746: rouille: HTTP Response Splitting via Unvalidated Response Header Values (bsc#1273881).
- CVE-2026-66754: rouille: remove_prefix function that allows remote unauthenticated attackers to crash the server by sending a crafted percent-encoded URL (bsc#1273884).
- CVE-2026-67181: rouille: HTTP Request Smuggling via Transfer-Encoding Desynchronization (bsc#1273886).
- CVE-2026-67182: rouille: HTTP Request Smuggling Enables Front-End Access Control Bypass (bsc#1273888).
- CVE-2026-93599: rustls-webpki: panic via empty BIT STRING (bsc#1282211).
- CVE-2026-93600: rustls-webpki: name constraints URI validation bypass (bsc#1282211).
- CVE-2026-93601: rustls-webpki: name constraint bypass (bsc#1282211).
- CVE-2026-93602: rustls-webpki: CRL revocation check bypass (bsc#1282211).
Changes for sccache:
Update to version 0.18.0~2:
- Add experimental concurrent cache support
- chore: Remove dependency status badge (#2856)
- Don't hand the jobserver to children that can't use it
- dist: refuse to trim rlibs from crates that also emit a cdylib
- fix(cache): avoid duplicate multilevel reads
- Strip basedirs from the compiler arguments too
- tests/integration: replace MinIO with Silo
- ci: dump sccache logs on integration failures
- multilevel: a chain with any writable level is writable
- Fix parsing of #line directives
- Release 0.18.0
- daemonize: use an allow-list approach to inherited FDs
- gcc, clang: make the assembler part of the cache key
- support cl.exe /openmp:llvm
- support all current /fsanitize*, /fsanitize-coverage*, and /fno-sanitize* args
- support MSVC /feature argument
- msvc: support lots of flags (#2832)
- Update shlex dependency to version 2 (#2836)
- gcc: mark flags as TooHard if need to cache something else (#2833)
- clang: support more CLI options (#2834)
- msvc: support arm64EC and fastfail flags (#2830)
- chore: fix typo in comment (#2829)
- nvcc: accept the --diag-error/--diag-suppress/--diag-warn family (#2816)
- cache: allow skipping capability checks (#2822)
- Bump opendal to 0.58.1 and fix fallout (fixes local GCS cache usage) (#2715)
- nvcc (Windows): protect escaped quotes in dryrun lines before flattening backslashes (#2811)
- Add an agent (#2812)
- Add support for d20bforceinline. (#2807)
- feat: add Microsoft Entra ID (passwordless) auth for the Azure Blob backend (#2802)
- Bump MSRV to 1.91.0 (#2793)
- Fix
nvccdryrun parsing for CUDA 13.3 (#2722) - test: Fixed…
- Record
openSUSE-SU-2026:21982-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:23983-1 No score
Security update for sccache
This update for sccache fixes the following issues:
- CVE-2024-12224: idna: idna accepts Punycode labels that do not produce any non-ASCII when decoded (bsc#1243868).
- CVE-2026-25541: bytes: integer overflow in 'BytesMut:reserve' can lead to undefined behavior and crashes (bsc#1274146).
- CVE-2026-25727: time: parsing of user-provided input by the RFC 2822 date parser can lead to stack exhaustion (bsc#1257923).
- CVE-2026-41676: openssl:
Deriver:deriveandPkeyCtxRef:derivecan overflow short buffers on OpenSSL 1.1.1 (bsc#1270206). - CVE-2026-41677: openssl: out-of-bounds read in PEM password callback when returning an oversized length in rust- openssl crate (bsc#1270559).
- CVE-2026-41678: openssl: incorrect bounds assertion in aes key wrap in rust-openssl crate (bsc#1270693).
- CVE-2026-41681: openssl: MdCtxRef::digest_final() writes past caller buffer with no length check in rust-openssl crate (bsc#1270736).
- CVE-2026-41898: openssl: unchecked callback-returned length in PSK and cookie generate trampolines can leak adjacent memory in rust-openssl crate (bsc#1270869).
- CVE-2026-42327: openssl: arbitrary code execution via specially crafted certificate in rust-openssl crate (bsc#1270512).
- CVE-2026-44662: openssl: heap buffer overflow when encrypting with AES key-wrap-with-padding in rust-openssl crate (bsc#1270938).
- CVE-2026-45784: openssl: out-of-bounds write in
CipherCtxRef::cipher_update_inplacefor AES-KW-PAD ciphers in rust- openssl crate (bsc#1270948). - CVE-2026-66746: rouille: HTTP Response Splitting via Unvalidated Response Header Values (bsc#1273881).
- CVE-2026-66754: rouille: remove_prefix function that allows remote unauthenticated attackers to crash the server by sending a crafted percent-encoded URL (bsc#1273884).
- CVE-2026-67181: rouille: HTTP Request Smuggling via Transfer-Encoding Desynchronization (bsc#1273886).
- CVE-2026-67182: rouille: HTTP Request Smuggling Enables Front-End Access Control Bypass (bsc#1273888).
- CVE-2026-93599: rustls-webpki: panic via empty BIT STRING (bsc#1282211).
- CVE-2026-93600: rustls-webpki: name constraints URI validation bypass (bsc#1282211).
- CVE-2026-93601: rustls-webpki: name constraint bypass (bsc#1282211).
- CVE-2026-93602: rustls-webpki: CRL revocation check bypass (bsc#1282211).
Changes for sccache:
Update to version 0.18.0~2:
- Add experimental concurrent cache support
- chore: Remove dependency status badge (#2856)
- Don't hand the jobserver to children that can't use it
- dist: refuse to trim rlibs from crates that also emit a cdylib
- fix(cache): avoid duplicate multilevel reads
- Strip basedirs from the compiler arguments too
- tests/integration: replace MinIO with Silo
- ci: dump sccache logs on integration failures
- multilevel: a chain with any writable level is writable
- Fix parsing of #line directives
- Release 0.18.0
- daemonize: use an allow-list approach to inherited FDs
- gcc, clang: make the assembler part of the cache key
- support cl.exe /openmp:llvm
- support all current /fsanitize*, /fsanitize-coverage*, and /fno-sanitize* args
- support MSVC /feature argument
- msvc: support lots of flags (#2832)
- Update shlex dependency to version 2 (#2836)
- gcc: mark flags as TooHard if need to cache something else (#2833)
- clang: support more CLI options (#2834)
- msvc: support arm64EC and fastfail flags (#2830)
- chore: fix typo in comment (#2829)
- nvcc: accept the --diag-error/--diag-suppress/--diag-warn family (#2816)
- cache: allow skipping capability checks (#2822)
- Bump opendal to 0.58.1 and fix fallout (fixes local GCS cache usage) (#2715)
- nvcc (Windows): protect escaped quotes in dryrun lines before flattening backslashes (#2811)
- Add an agent (#2812)
- Add support for d20bforceinline. (#2807)
- feat: add Microsoft Entra ID (passwordless) auth for the Azure Blob backend (#2802)
- Bump MSRV to 1.91.0 (#2793)
- Fix
nvccdryrun parsing for CUDA 13.3 (#2722) - test: Fixed…
- Record
SUSE-SU-2026:23983-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:3674-1 No score
Security update for sccache
This update for sccache fixes the following issues:
- CVE-2026-25541: bytes: integer overflow in 'BytesMut:reserve' can lead to undefined behavior and crashes (bsc#1274146).
- CVE-2026-66746: rouille: HTTP Response Splitting via Unvalidated Response Header Values (bsc#1273881).
- CVE-2026-66754: rouille: remove_prefix function that allows remote unauthenticated attackers to crash the server by sending a crafted percent-encoded URL (bsc#1273884).
- CVE-2026-67181: rouille: HTTP Request Smuggling via Transfer-Encoding Desynchronization (bsc#1273886).
- CVE-2026-67182: rouille: HTTP Request Smuggling Enables Front-End Access Control Bypass (bsc#1273888).
Changes for sccache:
- Update to version 0.17.0~1:
- Add experimental concurrent cache support
- Release 0.17.0
- tests: pin libc in the dist test crate
- doc: clarify server-side outputs and drop 'recommended mode' claim
- doc: document SCCACHE_CLIENT_SIDE env var
- doc: document client-side and direct modes in Architecture.md
- Fix description of Unix socket-based Redis connection
- server: remove redundant async block in start_compile_task
- server: simplify bind() request loops with ? instead of manual match arms
- Add support for arg files in Rust (#2782)
- feat: support S3 SSE-KMS with AWS-managed and customer-managed keys (#2770)
- abort compile tasks and associated subprocesses when a client disconnects
- treat -ivfsoverlay as a preprocessor-only argument
- gcc: refine response-file tokenizer visibility and whitespace handling
- integration: convert cmake 4.x modules XFAIL test to a passing test
- gcc/clang: cache and distribute builds using quoted @response files
- fix: Fix ToolchainPackager cfg gate to build on ppc64le/s390x
- fix: make gcc diagnostics color output work the same as for rustc
- implement client-side mode
- split handle_compile_response so that the compilation result can be handled separately
- implement IpcStorage -- Storage backend over IPC
- extend wire protocol with storage RPCs
- implement AddAssign for ServerStats and related types
- add Storage::get_path for direct file access
- implement get_raw/put_raw on MultiLevelStorage
- add client_side_mode config flag (SCCACHE_CLIENT_SIDE)
- Extract new_client_runtime() helper to DRY up client runtime creation
- Clarify single-threaded runtime rationale comment (grammar)
- fix: use single-threaded tokio runtime in sccache dist-client
- fix: use single-threaded tokio runtime in sccache client
- fix: handle disabled cache backend features in multilevel chain
- Fix ldd output parsing: remove .exists() check that failed on systems where the symlink source path does not exist locally (e.g. aarch64)
- Fix cfg guard for PanicToolchainPackager to also cover non-x86_64 Linux architectures (e.g. aarch64)
- Record
SUSE-SU-2026:3674-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
rust-rouilleDebian:14 |
All versions, plus listed versions 3.6.2+20250617+ds-13.6.2+20250617+ds-23.6.2+20250617+ds-3 |
None known |
sccacheSUSE:Linux Enterprise Server 16.0 From an advisory covering 19 CVEs |
before 0.18.0~2-160000.1.1 | 0.18.0~2-160000.1.1 |
sccacheSUSE:Linux Enterprise Server for SAP applications 16.0 From an advisory covering 19 CVEs |
before 0.18.0~2-160000.1.1 | 0.18.0~2-160000.1.1 |
sccacheSUSE:Linux Enterprise Module for Development Tools 15 SP7 From an advisory covering 5 CVEs |
before 0.17.0~1-150600.10.14.1 | 0.17.0~1-150600.10.14.1 |
sccacheSUSE:Linux Enterprise Server 15 SP6-LTSS From an advisory covering 5 CVEs |
before 0.17.0~1-150600.10.14.1 | 0.17.0~1-150600.10.14.1 |
sccacheSUSE:Linux Enterprise Server for SAP Applications 15 SP6 From an advisory covering 5 CVEs |
before 0.17.0~1-150600.10.14.1 | 0.17.0~1-150600.10.14.1 |
sccacheopenSUSE:Tumbleweed From an advisory covering 5 CVEs |
before 0.17.0~1-2.1 | 0.17.0~1-2.1 |
sccacheopenSUSE:Leap 16.0 From an advisory covering 19 CVEs |
before 0.18.0~2-160000.1.1 | 0.18.0~2-160000.1.1 |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| PoC in GitHub | theopaid/CVE-2026-66754-Remote-Denial-of-Service-via-Reachable-Assertion-in-URL-Prefix-Handling-rouille- | 2026-07-26 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV, PoC in GitHub |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-66754 is a high vulnerability (CVSS 8.2) in Tomaka Rouille, published July 28, 2026. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 0.56%, the 47th percentile. No source names a fixed version.
References
github.com/theopaid/Remote-Denial-of-Service-via-Reachable-Assertion-in-URL-Prefix-Handling-rouille-
vulncheck.com/advisories/rouille-reachable-assertion-dos-via-remove-prefix-percent-encoding
nvd.nist.gov/vuln/detail/CVE-2026-66754
github.com/advisories/GHSA-mrg5-7f6c-r28q
github.com/CVEProject/cvelistV5/tree/main/cves/2026/66xxx/CVE-2026-66754.json
github.com/tomaka/rouille
Show 38 moreShow less
security-tracker.debian.org/tracker/CVE-2026-66754
suse.com/support/update/announcement/2026/suse-su-202623983-1
bugzilla.suse.com/1243868
bugzilla.suse.com/1257923
bugzilla.suse.com/1270206
bugzilla.suse.com/1270512
bugzilla.suse.com/1270559
bugzilla.suse.com/1270693
bugzilla.suse.com/1270736
bugzilla.suse.com/1270869
bugzilla.suse.com/1270938
bugzilla.suse.com/1270948
bugzilla.suse.com/1273881
bugzilla.suse.com/1273884
bugzilla.suse.com/1273886
bugzilla.suse.com/1273888
bugzilla.suse.com/1274146
bugzilla.suse.com/1282211
suse.com/security/cve/CVE-2024-12224
suse.com/security/cve/CVE-2026-25541
suse.com/security/cve/CVE-2026-25727
suse.com/security/cve/CVE-2026-41676
suse.com/security/cve/CVE-2026-41677
suse.com/security/cve/CVE-2026-41678
suse.com/security/cve/CVE-2026-41681
suse.com/security/cve/CVE-2026-41898
suse.com/security/cve/CVE-2026-42327
suse.com/security/cve/CVE-2026-44662
suse.com/security/cve/CVE-2026-45784
suse.com/security/cve/CVE-2026-66746
suse.com/security/cve/CVE-2026-66754
suse.com/security/cve/CVE-2026-67181
suse.com/security/cve/CVE-2026-67182
suse.com/security/cve/CVE-2026-93599
suse.com/security/cve/CVE-2026-93600
suse.com/security/cve/CVE-2026-93601
suse.com/security/cve/CVE-2026-93602
suse.com/support/update/announcement/2026/suse-su-20263674-1
Left out here: the rest of 2 source descriptions. The JSON record has them.