CVE-2026-53933
ŚrednieCVSS 6.9Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 25 - wyżej niż 25% wszystkich znanych CVE
Streszczenie
Maravel, framework PHP zorientowany na wstrzykiwanie zależności, przed wersją 10.73.1 ma problem z ujawnianiem informacji przez kanał boczny. Gdy trasa została skompilowana z dynamicznymi symbolami zastępczymi (np. `/api/v1/users/{id}`), surowy klucz symbolu zastępczego został błędnie zarejestrowany na płaskiej liście kontrolnej tras statycznych. Atakujący skanujący endpointy mógł celowo przekazać dosłowną składnię szablonu (np. `GET /api/v1/users/{id}`), aby wymusić nieoczekiwane dopasowanie do mapy statycznej. Ponieważ silnik drzewa dynamicznego został ominięty, żadne argumenty nie zostały przechwycone. To zmuszało nowoczesne wersje PHP 8+ do rzucania natywnego `ArgumentCountError`, co skutkowało błędem 500 Internal Server Error zamiast jednolitego 404 Not Found. Śledząc, które wzorce fuzzowania eksplodowały błędem 500, złośliwy aktor mógł programowo profilować i mapować wewnętrzne nazwy parametrów tras oraz schematy kontrolerów.
Ocena ryzyka
Ujawnienie wewnętrznych nazw parametrów i schematów tras może pomóc atakującemu w precyzyjnym atakowaniu aplikacji.
Rekomendacja
Zaktualizuj Maravel do wersji 10.73.1 lub nowszej. Jeśli nie jest to możliwe, zastosuj obejście, dodając globalny middleware odrzucający dosłowne wzorce z nawiasami klamrowymi przed routerem.
Inne podatności w Maravel
Oryginalny opis (angielski, źródło NVD)
Maravel, a PHP framework oriented towards dependency injection, prior to version 10.73.1 has a side-channel information disclosure issue. When a route was compiled with dynamic placeholders (e.g., `/api/v1/users/{id}`), the raw string placeholder key was mistakenly registered into the flat static route checklist. An attacker scanning endpoints could intentionally pass the literal template syntax (e.g., `GET /api/v1/users/{id}`) to force an unexpected match against the static map. Because the dynamic tree engine was bypassed, no arguments were captured. This forced modern PHP 8+ versions to throw a native `ArgumentCountError`, resulting in a 500 Internal Server Error instead of a uniform 404 Not Found. By tracking which fuzz patterns exploded into a 500 error, a malicious actor could programmatically profile and map out internal route parameter names and controller schemas. Version 10.73.1 contains a patch. As a workaround, mitigate this side-channel leak by implementing a defensive check in a global middleware. This will reject any literal brace patterns before they reach the router engine.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

