CVE-2024-58378: Kritisk sårbarhed i Nokogiri
Kritisk sårbarhed i Nokogiri-biblioteket kan lade angribere overtage systemer via ondsindet XML-indhold uden login.
Hvad er det?
Nokogiri er et populært Ruby-programbibliotek (et stykke kode som udviklere bygger ovenpå) til at læse og behandle XML- og HTML-dokumenter. Biblioteket indeholder en fejl kaldet use-after-free (brug af allerede frigivet hukommelse), som stammer fra det underliggende komponent libxml2. Fejlen opstår, når et program læser XML-filer med DTD-validering og XInclude-udvidelse slået til — to funktioner der bruges til at strukturere og referere indhold i XML. En angriber kan sende et specialudformet XML-dokument, som udløser fejlen og potentielt giver fuld kontrol over systemet. Kun CRuby-versioner der bruger Nokogiri’s medfølgende libxml2 er sårbare.
Hvem rammer det?
Sårbarheden rammer virksomheder og udviklere, der bruger Ruby-baserede webapplikationer eller bagvedliggende systemer som anvender Nokogiri til at behandle XML-data — eksempelvis CMS-platforme, API-integrationer, dokumenthåndtering og rapporteringsværktøjer. Konkret er du i risikogruppen, hvis din webudvikler eller leverandør bruger Ruby og Nokogiri version 1.15.x før 1.15.6 eller 1.16.x før 1.16.2 med CRuby. JRuby og systemer der bruger operativsystemets egen libxml2 er ikke påvirket.
Hvad kan ske?
Udnytter en angriber denne sårbarhed, kan konsekvenserne være alvorlige:
- Fuld systemovertagelse — angriberen kan potentielt køre vilkårlig kode på din server.
- Datalæk — fortrolige oplysninger, kundedata eller interne dokumenter kan kompromitteres.
- Manipulation af data — angriberen kan ændre eller slette data i dit system.
- Nedbrud — applikationen kan crashe og blive utilgængelig for dine kunder og medarbejdere.
Angrebet kræver ingen forudgående login og kan udføres over internettet, hvilket gør det særligt farligt.
Hvor alvorligt er det?
Sårbarheden er vurderet kritisk med en CVSS-score på 9,8 ud af 10. Det er den næsthøjeste mulige score. Angrebsvektoren er netværksbaseret, kræver ingen særlige rettigheder og ingen handling fra brugernes side. Det betyder, at en angriber kan forsøge at udnytte den direkte fra internettet uden forudgående adgang til dit system. Kombinationen af høj tilgængelighed og fuldt kompromitteret fortrolighed, integritet og tilgængelighed (CIA) placerer dette i den absolut øverste risikoklasse.
Hvad gør jeg nu?
Kontakt din webudvikler eller IT-leverandør og bed dem bekræfte, om din løsning bruger Nokogiri med CRuby. Hvis ja, skal de straks opdatere til en sikker version:
- Identificér versionen — bed din udvikler tjekke om projektet bruger Nokogiri i CRuby-udgaven, og hvilken version der er installeret.
- Opdatér Nokogiri — opdatér til version 1.15.6 eller nyere (på 1.15.x-sporet) eller 1.16.2 eller nyere (på 1.16.x-sporet). Dette opdaterer automatisk den medfølgende libxml2 til en sikker version.
- Test efter opdatering — bed din udvikler verificere, at applikationen fungerer korrekt efter opdateringen.
- Gennemgå XML-behandling — hvis din applikation modtager XML-input fra eksterne parter, så overvej at begrænse eller validere dette input ekstra.
- Dokumentér opdateringen — notér dato og version, så du har dokumentation for din sikkerhedshåndtering — nyttigt ved fx NIS2-compliance.
Opdatér straks — kritisk sårbarhed
Vi anbefaler, at du kontakter din IT-leverandør eller udvikler i dag og beder dem prioritere opdatering af Nokogiri. Sikkerhedsrettelsen er tilgængelig og nem at implementere — der er ingen undskyldning for at vente. Hvis du er i tvivl om, hvorvidt din løsning er påvirket, kan Auroa hjælpe dig med en hurtig vurdering.
Tidslinje
Konkrete eksempler
Ondsindet XML via filupload
En angriber uploader et særligt konstrueret XML-dokument via en offentlig funktion på din hjemmeside — eksempelvis en importfunktion til at indlæse produktdata eller fakturaer. Fordi applikationen behandler XML med DTD-validering og XInclude slået til, udløses use-after-free fejlen, og angriberen kan afvikle vilkårlig kode på din server og potentielt overtage hele systemet.
Angreb via API-integration
Din applikation modtager automatisk XML-data fra en tredjepartsleverandør via et API (programmeringsgrænseflade). En angriber, der har kompromitteret leverandørens system eller kan opsnappe kommunikationen, sender et manipuleret XML-svar. Nokogiri-parseren i din applikation behandler det inficerede svar og udløser fejlen, uden at nogen bruger behøver at gøre noget.
Angreb via e-mail-vedhæftning behandlet automatisk
Har din virksomhed et system der automatisk behandler XML-baserede dokumenter modtaget på e-mail — fx ordrebekræftelser i XML-format — kan en angriber sende en e-mail med et ondsindet XML-dokument. Systemet behandler filen automatisk i baggrunden, fejlen udløses, og angriberen opnår adgang til serveren uden brugerinteraktion.
Ofte stillede spørgsmål
Hvad er Nokogiri, og bruger vi det overhovedet?
Nokogiri er et programbibliotek til Ruby-sproget, som bruges til at læse og analysere XML og HTML. Det er meget udbredt i Ruby- og Ruby on Rails-applikationer. Din udvikler eller IT-leverandør kan hurtigt fortælle dig, om det indgår i jeres løsning ved at tjekke projektets afhængighedsliste (kaldet en ‘Gemfile’).
Er vi sårbare, hvis vi bruger JRuby eller systemets libxml2?
Nej. Sårbarheden rammer kun CRuby-installationer, der bruger Nokogiri’s medfølgende libxml2. Bruger din applikation JRuby (en Java-baseret Ruby-version) eller systemets egen libxml2, er I ikke påvirket. Spørg din udvikler, hvilken opsætning I bruger.
Hvad er en use-after-free fejl, og hvorfor er den farlig?
En use-after-free fejl opstår, når et program forsøger at bruge en del af computerens hukommelse, efter den allerede er blevet frigivet. Det kan føre til, at en angriber placerer ondsindet kode på det frigivne sted i hukommelsen, som programmet efterfølgende udfører. Det er en klassisk og alvorlig programmeringsfejl, der kan give angriberen fuld kontrol.
Kræver opdateringen nedetid for vores systemer?
Det afhænger af jeres systemopsætning og deploymentprocedure. Mange Ruby-applikationer kan opdateres med minimal nedetid. Din udvikler bør planlægge opdateringen udenfor spidsbelastningstidspunkter og teste i et testmiljø først, hvis det er muligt. Vej risikoen ved kort nedetid op mod risikoen ved at forblive sårbar.
Kan vi bruge en midlertidig løsning i stedet for at opdatere?
Den sikreste og anbefalede løsning er at opdatere Nokogiri til en rettet version. En alternativ afbødning kan være at deaktivere DTD-validering og XInclude-udvidelse i XML-læseren, men dette kræver kodeændringer og kan påvirke applikationens funktionalitet. Opdatering er klart at foretrække.
Har vi noget NIS2-ansvar i forbindelse med denne sårbarhed?
Hvis din virksomhed er omfattet af NIS2-direktivet, er du forpligtet til at håndtere kendte kritiske sårbarheder inden for rimelig tid og dokumentere din indsats. En CVSS 9.8-sårbarhed vil typisk falde under krav om hurtig afhjælpning. Dokumentér opdateringen og tidspunktet, så du har et spor til din sikkerhedsrapportering.
Ramte produkter
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.
Brug for hjælp med jeres sikkerhed?
Vi hjælper SMV’er med at omsætte trusler som denne til konkrete handlingsplaner.
