CVE-2022-51000: Kritisk sårbarhed i Nokogiri forklaret
Kritisk fejl i Nokogiri-biblioteket kan give angribere fuld kontrol over din server via ondsindet XML-indhold.
Hvad er det?
Nokogiri er et udbredt programbibliotek (en samling kode som udviklere bygger programmer med) til at behandle XML- og HTML-dokumenter. Versioner af Nokogiri ældre end 1.13.2 medfølger med to sårbare underbiblioteker: libxml2 og libxslt. Disse underbiblioteker indeholder kendte fejl, der kan udnyttes, når din applikation behandler XML-dokumenter eller XSL-stilark (skabeloner til XML-transformation) fra ikke-pålidelige kilder. Fejlen er klassificeret som en use-after-free-fejl (CWE-416), hvilket betyder at programmet ved en fejl fortsætter med at bruge hukommelse, det allerede har frigivet — noget en angriber kan udnytte til at afvikle ondsindet kode.
Hvem rammer det?
Sårbarheden rammer dig, hvis din virksomhed:
- Driver en webapplikation eller API (programgrænseflade) bygget med programmeringssproget Ruby
- Bruger Nokogiri-biblioteket i version ældre end 1.13.2 til at behandle XML eller HTML
- Modtager og behandler XML-dokumenter eller XSL-stilark fra brugere, kunder eller eksterne systemer
Er du usikker, spørg din udvikler eller IT-leverandør, om jeres Ruby-applikationer anvender Nokogiri.
Hvad kan ske?
En angriber, der udnytter denne sårbarhed, kan potentielt:
- Overtage din server — ved at afvikle vilkårlig kode (kode som angriberen selv bestemmer) på den maskine, der kører din applikation
- Stjæle fortrolige data — ved at læse oplysninger fra serverens hukommelse, herunder adgangskoder, kundedata og API-nøgler
- Lægge din service ned — ved at forårsage et nedbrud (denial-of-service), så dine kunder ikke kan tilgå dine systemer
Angrebet kræver ingen forudgående adgang eller brugerinteraktion og kan udføres over internettet.
Hvor alvorligt er det?
CVSS-scoren er 9,8 ud af 10 — Kritisk. Det er den næsthøjest mulige alvorlighedsgrad. Vurderingen skyldes:
- Angrebet kan udføres direkte over netværket uden særlige tekniske forudsætninger
- Angriberen behøver hverken konto, adgangskode eller hjælp fra en bruger
- Konsekvenserne rammer fortrolighed, integritet og tilgængelighed på højeste niveau
Virksomheder, der behandler XML-input fra brugere eller tredjepart, bør behandle dette som en akut sikkerhedshændelse.
Hvad gør jeg nu?
Kontakt din Ruby-udvikler eller IT-leverandør med det samme og bed dem gennemføre følgende trin:
- Identificér brugen af Nokogiri — Tjek alle Ruby-projekter for om Nokogiri indgår som afhængighed (dependency). Det gøres typisk ved at søge i projektets Gemfile eller Gemfile.lock.
- Opdatér til Nokogiri 1.13.2 eller nyere — Kør kommandoen
bundle update nokogirii projektet for at opdatere til en sikker version. - Geninstallér og genstart applikationen — Sørg for at den opdaterede version er aktiv i produktionsmiljøet (det system dine brugere tilgår).
- Verificér opdateringen — Bekræft at den kørende version er 1.13.2 eller nyere ved at tjekke bibliotekets versionsnummer.
- Overvåg logfiler — Gennemgå applikations- og serverlogfiler for tegn på mistænkelig XML-behandling i perioden op til opdateringen.
Opdatér inden for 24–48 timer
Med en CVSS-score på 9,8 og kendte proof-of-concept exploits tilgængelige for de underliggende CVE’er (CVE-2021-30560 og CVE-2022-23308) anbefaler vi, at du behandler dette som en akut opgave. Kontakt din udvikler eller IT-leverandør i dag og bed dem opdatere Nokogiri til version 1.13.2 eller nyere. Opdateringen er tilgængelig og ligetil at gennemføre — det er en enkelt kommando i de fleste Ruby-projekter. Vent ikke med at handle, da angrebet ikke kræver nogen brugerinteraktion og kan udføres direkte over internettet.
Tidslinje
Konkrete eksempler
Ondsindet XML-fil via kontaktformular
En angriber uploader en særligt udformet XML-fil via et uploadfelt på din hjemmeside — f.eks. en fakturaupload eller et kontaktformular, der accepterer XML-dokumenter. Din Ruby-applikation behandler filen med Nokogiri, og den use-after-free-fejl i libxml2 udløses. Angriberen afvikler herefter vilkårlig kode på din server og kan eksportere kundedata eller installere skadelig software.
Manipulation via tredjeparts datafeed
Din applikation henter automatisk et XML-datafeed fra en ekstern leverandør — f.eks. produktdata eller nyhedsartikler. En angriber, der har kompromitteret leverandørens system eller kan udføre et man-in-the-middle-angreb (mellemmandsangreb), indsætter et ondsindet XSL-stilark i feedet. Når din applikation behandler stilarket med libxslt, udløses denial-of-service-fejlen og din service går ned.
Hukommelseslæk via API-kald
En angriber sender et ondsindet XML-dokument direkte til dit API-endepunkt (det sted din applikation modtager data fra andre systemer). Ved at udnytte fejlen i libxml2 tvinger angriberen applikationen til at afsløre indhold fra serverens hukommelse i sit svar — herunder potentielt adgangsnøgler, sessionstokens eller persondata om dine kunder.
Ofte stillede spørgsmål
Bruger vi overhovedet Nokogiri?
Nokogiri bruges primært i Ruby-applikationer. Spørg din udvikler om at søge efter ‘nokogiri’ i jeres projekters Gemfile.lock-filer. Mange populære Ruby-frameworks, herunder Ruby on Rails, anvender indirekte Nokogiri, så det kan godt være til stede uden I er klar over det.
Er vi i fare, hvis vi ikke modtager XML fra brugere?
Risikoen er lavere, men ikke elimineret. Sårbarheden udløses, når applikationen behandler XML eller XSL-stylesheets fra upålidelige kilder — det kan også være tredjeparts-API’er eller RSS-feeds. Er I i tvivl, så opdatér alligevel; det er hurtigt gjort og fjerner risikoen fuldstændigt.
Hvad er en use-after-free-fejl, og hvorfor er den farlig?
En use-after-free-fejl opstår, når et program frigiver en del af computerens hukommelse, men ved en fejl fortsætter med at bruge den. En angriber kan udnytte dette vindue til at placere ondsindet kode i den frigivne hukommelse og få programmet til at udføre den. Det er en af de mest alvorlige typer programmeringsfejl, fordi den kan give fuld kontrol over det ramte system.
Kan vi nøjes med en midlertidig løsning i stedet for at opdatere?
Nej — der findes ingen pålidelig midlertidig løsning (workaround) for denne sårbarhed. Den eneste sikre løsning er at opdatere Nokogiri til version 1.13.2 eller nyere. Opdateringen er tilgængelig og gratis, og processen tager typisk under en time for en erfaren udvikler.
Skal vi anmelde hændelsen til Datatilsynet, hvis vi er blevet angrebet?
Hvis I har mistanke om, at persondata er blevet kompromitteret som følge af denne sårbarhed, har I efter GDPR pligt til at anmelde bruddet til Datatilsynet inden for 72 timer. Kontakt jeres databeskyttelsesrådgiver (DPO) eller juridiske rådgiver med det samme, hvis I opdager tegn på angreb.
Gælder sårbarheden alle versioner af Nokogiri?
Sårbarheden berører Nokogiri-versioner ældre end 1.13.2, der anvender de medfølgende (vendored) udgaver af libxml2 og libxslt. Bruger din applikation systeminstallerede versioner af disse biblioteker (i stedet for de medfølgende), kan risikoen variere afhængigt af operativsystemets patchniveau — men opdatering til Nokogiri 1.13.2 er stadig den anbefalede handling.
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.13.2 (CRuby, when using packaged libraries) ships vendored libxml2 2.9.12 and libxslt 1.1.34, which are affected by two upstream CVEs. Via CVE-2021-30560 in libxslt, an application transforming XML with untrusted XSL stylesheets is vulnerable to a denial-of-service attack. Via CVE-2022-23308 in libxml2, an application parsing an untrusted document with parse option DTDVALID set to true and NOENT set to false may be vulnerable to denial of service, memory disclosure, or code execution. Nokogiri 1.13.2 upgrades vendored libxml2 to 2.9.13 and libxslt to 1.1.35.
Brug for hjælp med jeres sikkerhed?
Vi hjælper SMV’er med at omsætte trusler som denne til konkrete handlingsplaner.
