CVE-2024-58378: Kritisk fejl i Nokogiri til Ruby
Nokogiri til Ruby har en kritisk hukommelsesfejl (CVE-2024-58378). Opdatér til 1.15.6 eller 1.16.2 for at lukke hullet.
Hvad er det?
CVE-2024-58378 er en use-after-free fejl, hvor et program ved en fejl bruger hukommelse, der allerede er frigivet, i biblioteket Nokogiri til programmeringssproget Ruby. Nokogiri bruges til at læse og behandle XML- og HTML-dokumenter, og fejlen ligger i det underliggende bibliotek libxml2, som Nokogiri leverer indbygget. Når en applikation bruger Nokogiri’s XML Reader-funktion med DTD-validering, som er kontrol af et dokuments struktur mod en skabelon, og XInclude, som er indsættelse af eksternt XML-indhold, kan et særligt udformet XML-dokument udløse fejlen i funktionen xmlValidatePopElement.
Hvem rammer det?
Det rammer virksomheder, der har udviklet eller købt Ruby-baserede applikationer, der bruger Nokogiri-gemmet til at parse XML, og som kører CRuby, den almindelige Ruby-fortolker, med det pakkede libxml2 i stedet for systemets eget. Sårbare versioner er Nokogiri før 1.15.6 og 1.16.x før 1.16.2. Installationer, der bruger JRuby eller systemets libxml2 i stedet for det medfølgende, er ikke ramt.
Hvad kan ske?
En vellykket udnyttelse kan gøre en applikation ustabil og få den til at gå ned, eller i værste fald give en angriber mulighed for at køre egen kode på serveren, fordi hukommelsen kan manipuleres efter frigivelse. For en dansk virksomhed betyder det risiko for nedbrud af en webtjeneste, eller hvis koden kan udføres, adgang til data og systemer bag applikationen.
Hvor alvorligt er det?
CVSS-scoren er 9,8 ud af 10, hvilket er kritisk. Angrebet kræver ikke login og ingen handling fra en bruger, og det kan udføres over netværket. Det kræver dog, at applikationen aktivt bruger XML Reader-funktionen med DTD-validering og XInclude aktiveret samtidig, hvilket ikke er standardopsætning i alle applikationer. Der er ikke kendte tilfælde af aktiv udnyttelse på offentliggørelsesdatoen.
Hvad gør jeg nu?
Sårbarheden lukkes ved at opdatere Nokogiri-gemmet til en version, hvor libxml2 er opdateret.
- Opdatér Nokogiri til mindst version 1.15.6 eller 1.16.2, afhængig af hvilken major-linje I bruger.
- Kør bundle update nokogiri eller gem update nokogiri, og genbyg og genudsend applikationen.
- Undersøg, om jeres applikation bruger Nokogiri::XML::Reader med DTD-validering og XInclude aktiveret, så I kender jeres eksponering.
- Tjek, om I kører CRuby med pakket libxml2, eller om I bruger systemets libxml2 eller JRuby, som ikke er ramt.
- Gennemgå logs for usædvanlig XML-trafik, hvis I ikke kan opdatere med det samme.
- Kontakt jeres leverandør eller en sikkerhedsrådgiver, hvis I ikke selv har styr på jeres Ruby-afhængigheder eller ikke kan opdatere uden risiko for driftsstop.
Opdatér inden for en uge
Vi anbefaler, at I opdaterer Nokogiri til 1.15.6, 1.16.2 eller nyere, så snart det kan planlægges ind i en normal opdateringscyklus. Det er en biblioteksopdatering, der typisk kan testes og udrulles uden større risiko. Det er i orden at vente til næste planlagte opdateringsvindue, hvis jeres applikation ikke bruger XML Reader med DTD-validering og XInclude samtidig, men vi anbefaler stadig at få den med i næste opdatering af hensyn til fremtidig brug.
Tidslinje
Konkrete eksempler
Dokumenthåndtering hos en kommune
En kommunal fagsystemleverandør bruger Nokogiri til at validere og behandle XML-dokumenter, som borgere uploader via en selvbetjeningsportal. Hvis systemet bruger XML Reader med DTD-validering og XInclude, kan et ondsindet udformet dokument fra en borger få applikationen til at gå ned, eller i værste fald give en angriber mulighed for at køre kode på serveren.
Ofte stillede spørgsmål
Er vi ramt af CVE-2024-58378?
I er ramt, hvis jeres applikation bruger Ruby-gemmet Nokogiri i en version før 1.15.6 eller 1.16.2, kører CRuby med det pakkede libxml2, og bruger XML Reader-funktionen med DTD-validering og XInclude aktiveret samtidig.
Hvordan tjekker vi, hvilken version af Nokogiri vi bruger?
Kør gem list nokogiri eller bundle list nokogiri i jeres Ruby-projekt, eller tjek filen Gemfile.lock, for at se den installerede version.
Kan vi vente til næste planlagte opdatering?
Ja, hvis jeres applikation ikke bruger DTD-validering og XInclude sammen i XML Reader, og der ikke er kendt udnyttelse. Bruger I netop den kombination, bør opdateringen prioriteres højere.
Er systemer med JRuby eller systemets libxml2 ramt?
Nej, ifølge beskrivelsen fra NVD er installationer med JRuby eller systemets eget libxml2 i stedet for det pakkede ikke ramt af denne sårbarhed.
Skal vi anmelde dette til nogen?
Der er ikke pligt til at anmelde en sårbarhed i sig selv. Konstaterer I derimod et konkret sikkerhedsbrud som følge af udnyttelse, hvor personoplysninger er involveret, kan det udløse anmeldepligt til Datatilsynet.
CVSS-detaljer
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWE-svaghedstyper
Original NVD-beskrivelse (engelsk)
Nokogiri before 1.15.6 and 1.16.x before 1.16.2 (CRuby, when using the packaged libxml2) is affected by a use-after-free vulnerability in libxml2 (CVE-2024-25062) in the xmlTextReader module, which underlies Nokogiri::XML::Reader. When using the XML Reader interface with DTD validation and XInclude expansion enabled, processing a crafted XML document can lead to an xmlValidatePopElement use-after-free. Nokogiri 1.15.6 and 1.16.2 resolve this by upgrading the packaged libxml2 to 2.11.7 and 2.12.5 respectively. JRuby and installations using system libxml2 are not affected.
Referencer & kilder
Eksterne kilder
Brug for hjælp med jeres sikkerhed?
Vi hjælper SMV’er med at omsætte trusler som denne til konkrete handlingsplaner.