CrowdSec w wersjach od 1.7.0 do 1.7.8 jest podatny na atak wyczerpania zasobów (denial of service) poprzez wysyłanie skompresowanych żądań gzip do niechronionych endpointów API. Atakujący bez uwierzytelnienia może doprowadzić do niedostępności komponentu LAPI (Local API).
▸ Pokaż oryginał (EN)
CrowdSec offers crowdsourced protection against malicious IPs. From 1.7.0 until 1.7.8, the LAPI router used gin-contrib/gzip with DefaultDecompressHandle globally in pkg/apiserver/controllers/controller.go, causing /v1/watchers and /v1/watchers/login to decompress unauthenticated gzip-compressed JSON request bodies without enforcing a maximum decompressed size and allowing excessive heap allocation that can make LAPI unreachable. This issue is fixed in version 1.7.8.
Router LAPI wykorzystywał bibliotekę gin-contrib/gzip z włączoną opcją DefaultDecompressHandle globalnie, co powodowało automatyczną dekompresję treści żądań gzip dla endpointów /v1/watchers oraz /v1/watchers/login bez weryfikacji tożsamości nadawcy. Brak ograniczenia maksymalnego rozmiaru zdekompresowanych danych umożliwiał wysłanie specjalnie spreparowanego, silnie skompresowanego payloadu (tzw. bomba kompresyjna), którego dekompresja powodowała nadmierną alokację pamięci na stercie (heap). Nadmierne zużycie pamięci prowadziło do stanu, w którym LAPI stawał się nieosiągalny.
Atakujący bez żadnego uwierzytelnienia może zdalnie spowodować niedostępność komponentu LAPI systemu CrowdSec, pozbawiając organizację mechanizmu ochrony opartego na crowdsourcingu blokowania złośliwych adresów IP.
Należy zaktualizować CrowdSec do wersji 1.7.8, w której problem został naprawiony poprzez ograniczenie dekompresji gzip i wymuszenie maksymalnego rozmiaru zdekompresowanej treści żądania.
CrowdSec w wersjach od 1.7.0 do 1.7.7 (włącznie) — wersje przed 1.7.8
Podatność dotyczy wyłącznie komponentu LAPI (Local API). Poprawka dostępna jest w commitach 54a0dfe6c16b7687b0da6634e0b19ef0f5d9bb30 oraz 56d0d6915f7f25941dc5b4f484028646f6601a37 w repozytorium GitHub projektu CrowdSec.
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