Der er tilgængelige korrigerende udgivelser af server-JavaScript-platformen Node.js 21.6.2, 20.11.1, 18.19.1, hvoraf 8 sårbarheder er blevet rettet, herunder 4, der er klassificeret som høj risiko:
- CVE-2024-21892 — muligheden for, at en ikke-privilegeret bruger kan indsætte kode, der arver de udvidede privilegier, som arbejdsprocessen kører med. Sårbarheden skyldes en fejl i implementeringen af undtagelsen, der tillader, at miljøvariabler sat af en ikke-privilegeret bruger behandles under udvidede privilegier. Undtagelsen skulle kun have været givet for rettighederne CAP_NET_BIND_SERVICE, men på grund af en fejl blev den også anvendt på andre rettigheder.
- CVE-2024-22019 — et denial of service angreb gennem udtømning af tilgængelige ressourcer (CPU-belastning og båndbreddeforbrug) ved behandling af specifikt formaterede chunked-anmodninger af den indbyggede HTTP-server, hvilket fører til læsning af et ubegribelig antal bytes i én forbindelse.
- CVE-2024-21896 — overvækst af basisbiblioteksgrænsen i filstier. Sårbarheden tillader omgåelse af normalisering af filstier ved hjælp af path.resolve() ved at sende en sti ved hjælp af Buffer-klassen. For at opnå en sådan sti kaldes metoden Buffer.from() efter kontrol, men i applikationen kan Buffer.prototype.utf8Write kaldes, hvilket fører til en ændring af indholdet på et senere trin efter udførelse af path.resolve() og fremkalder sårbarheden.
- CVE-2024-22017 — kaldet setuid() nulstillede ikke alle privilegier. Især påvirker setuid() ikke io_uring-operationerne, der anvendes i libuv, hvis de blev initialiseret før kaldet til setuid().
- CVE-2023-46809 — en sårbarhed i API'et privateDecrypt(), der tillader anvendelse af Marvin-angrebet til at dekryptere RSA baseret på tidsmåling af operationer.
- CVE-2024-21891 — muligheden for at omgå adgangsmodellen ved brug af brugerdefinerede normaliseringshåndterere af filstier.
- CVE-2024-21890 — forkert behandling af masker i parametrene «—allow-fs-read» og «—allow-fs-write». For eksempel vil «—allow-fs-read=/home/node/.ssh/*.pub» give adgang til alt indholdet i «.ssh/», og ikke kun filer med udvidelsen «.pub», da masken «*» behandles som det sidste element i stien.
- CVE-2024-22025 – tjenestenægtelse gennem ressourcetræk ved dekodning af komprimerede data i Brotli-format, modtaget via fetch()-opkald.
Derudover kan der nævnes udgivelsen af biblioteket libuv 1.48.0, som bruges i Node.js til multiplexing af forbindelser og asynkron håndtering af input/output. Udover Node.js bruges biblioteket også i DNS-servere som BIND 9 og Knot DNS, HTTP-serveren H2O, Lua-rammeværket Luvit, virtuelle maskiner MoarVM, Julia-sproget og Python-rammeværket uvloop. I den nye version er en sårbarhed (CVE-2024-24806) blevet udbedret, som manifesterer sig i projekter, der bruger libuv, og muliggør en SSRF (Server-side request forgery) attack for at få adgang til den interne API. Sårbarheden opstod på grund af afkortningen af værtsnavnet af funktionen uv_getaddrinfo() til 256 tegn før domæneopslag gennem funktionen getaddrinfo(), hvilket kan føre til identificering af den forkerte IP-adresser og omgåelse af kontroller. For eksempel kan tjenester som MySpace, der opretter underdomæner i formatet "username.example.com", angribes ved at angive et langt brugernavn.
Der er også frigivet en opdatering til den brugte HTTP-klient undici 5.28.3 i Node.js, hvor sårbarheden (CVE-2024-24758) er blevet rettet, som skyldtes manglende rensning af HTTP-headeren Proxy-Authorization ved omdirigering af anmodninger.
Kilde: opennet.ru
