CVE-2022-51000: Kritisk fejl i Nokogiri (Ruby XML-bibliotek)
Ruby-biblioteket Nokogiri før 1.13.2 har en sårbarhed i medfølgende XML-motor, der kan give overtagelse. Opdatér til 1.13.2 eller nyere.
Hvad er det?
CVE-2022-51000 sidder i Nokogiri, et populært Ruby-bibliotek til at læse og behandle XML- og HTML-dokumenter. Versioner før 1.13.2 medleverer forældede udgaver af de underliggende motorer libxml2 og libxslt, som selv har kendte sikkerhedshuller. Det centrale problem er en use-after-free-fejl, hvor programmet fejlagtigt bruger hukommelse, der allerede er frigivet, hvilket en angriber kan udnytte til at få programmet til at gå ned eller i værste fald køre skadelig kode. Fejlen opstår, når Nokogiri parser et XML-dokument med bestemte indstillinger for dokumenttype-validering, eller når det transformerer XML med en ekstern XSL-skabelon.
Hvem rammer det?
Det rammer alle danske virksomheder, der selv har udviklet eller fået udviklet applikationer i Ruby eller Ruby on Rails, hvor Nokogiri bruges til at parse XML eller HTML fra eksterne kilder, for eksempel fakturaimport, feed-behandling, webshop-integrationer eller API’er, der modtager XML fra kunder og leverandører. Det gælder alle versioner af Nokogiri før 1.13.2, når biblioteket bruger de medfølgende (vendored) udgaver af libxml2 og libxslt frem for systemets egne biblioteker.
Hvad kan ske?
En angriber kan sende et forberedt XML-dokument eller en XSL-skabelon til en sårbar applikation. Afhængigt af hvordan applikationen bruger Nokogiri, kan det føre til, at tjenesten går ned og skal genstartes, at data i serverens hukommelse kan læses uautoriseret, eller i værste fald at angriberen kan køre egen kode på serveren. For en dansk virksomhed med en webshop eller et kundeportal bygget i Ruby on Rails betyder det risiko for driftsstop eller læk af følsomme data, hvis systemet parser XML fra utroværdige kilder.
Hvor alvorligt er det?
Sårbarheden har en CVSS-score på 9,8 ud af 10, hvilket er kritisk. Den kan udnyttes over netværket, kræver ikke login og kræver ikke, at en bruger klikker på noget. Angriberen skal blot kunne levere et XML-dokument eller en XSL-skabelon til applikationen. Konsekvensen kan påvirke fortrolighed, integritet og tilgængelighed fuldt ud. Der er ikke belæg for, at sårbarheden er aktivt udnyttet i angreb, men de underliggende fejl i libxml2 og libxslt er offentligt kendte og dokumenterede, hvilket gør det realistisk, at kode til at udnytte den kan findes eller udvikles.
Hvad gør jeg nu?
Sådan lukker I hullet og begrænser risikoen, mens I opdaterer:
- Opdatér Nokogiri-gemmen til version 1.13.2 eller nyere i alle Ruby- og Ruby on Rails-applikationer. Kør bundle update nokogiri og test derefter jeres applikationer.
- Kortlæg, hvor jeres applikationer bruger Nokogiri til at parse XML eller HTML fra eksterne kilder, og prioritér de systemer, der modtager data fra internettet eller fra tredjeparter.
- Undlad indtil opdateringen er gennemført at parse XML med DTD-validering aktiveret, hvis det kan undgås, og undgå at transformere XML fra utroværdige afsendere med XSL.
- Gennemgå jeres Gemfile.lock for at se, om Nokogiri kører med medfølgende (vendored) libxml2 og libxslt, eller med systembiblioteker, da det påvirker eksponeringen.
- Kontrollér driftslogfiler for uventede nedbrud i applikationer, der bruger Nokogiri, som kan være tegn på forsøg på at udnytte fejlen.
- Hvis I ikke selv har udviklerressourcer til at opdatere og teste afhængigheder i jeres Ruby-applikationer, bør I hente hjælp udefra til at gennemføre opdateringen og verificere, at systemerne fungerer korrekt bagefter.
Opdatér inden for få dage
Vi anbefaler, at I opdaterer Nokogiri til 1.13.2 eller nyere i alle jeres Ruby-baserede systemer så hurtigt som muligt, da sårbarheden kan udnyttes uden login og uden brugerinteraktion. Det er kun forsvarligt at vente, hvis I med sikkerhed kan dokumentere, at ingen af jeres applikationer parser XML eller XSL fra eksterne eller utroværdige kilder. I alle andre tilfælde bør opdateringen indgå i jeres næste driftsvindue uden yderligere forsinkelse.
Tidslinje
Konkrete eksempler
Fakturaimport i en dansk webshop
En dansk webshop bygget i Ruby on Rails modtager XML-fakturaer fra leverandører via en integration, der bruger Nokogiri til at parse filerne. En leverandørs system bliver kompromitteret, og en angriber sender en forberedt XML-fil, der udnytter fejlen i den medfølgende libxml2. Webshoppens applikation går ned, og undersøgelser viser efterfølgende, at hukommelsen kunne have været læst af angriberen.
Ofte stillede spørgsmål
Hvordan finder vi ud af, om vi bruger Nokogiri og hvilken version?
Kør gem list nokogiri i jeres Ruby-miljø, eller søg efter nokogiri i jeres Gemfile.lock. Der vil versionsnummeret stå. Er versionen lavere end 1.13.2, er I sårbare.
Kan vi vente til den næste planlagte opdatering?
Det afhænger af, om jeres applikation parser XML eller HTML fra eksterne kilder. Gør den det, bør opdateringen ikke vente, da sårbarheden kan udnyttes uden login. Bruger I kun Nokogiri internt til fast, kontrolleret data, kan I planlægge opdateringen ind i næste normale driftsvindue.
Er vi ramt, hvis vi bruger Ruby on Rails?
Ruby on Rails bruger ofte Nokogiri under motorhjelmen til XML- og HTML-behandling. Kontrollér jeres Gemfile.lock for at se, om Nokogiri er en direkte eller indirekte afhængighed, og hvilken version der er installeret.
Kræver det, at en angriber er logget ind?
Nej. Sårbarheden kan udnyttes over netværket uden login og uden brugerinteraktion, hvis applikationen sender et forberedt XML-dokument videre til Nokogiri til parsing.
Skal vi anmelde noget, hvis vi opdaterer nu og ikke har set tegn på misbrug?
Nej, en almindelig opdatering uden tegn på kompromittering kræver ikke anmeldelse. Finder I derimod tegn på, at sårbarheden er blevet udnyttet og persondata er kompromitteret, skal I vurdere anmeldelse til Datatilsynet efter de almindelige regler.
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.
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.