CVE-2026-8445: Kritisk XSS-fejl i justhtml
justhtml frem til version 1.11.0 undlader at rense HTML-tegn i Markdown-output. Opdatér til 1.12.0 for at undgå cross-site scripting.
Hvad er det?
justhtml er et bibliotek, der bruges i webapplikationer til at omdanne HTML-dokumenter til Markdown, et enkelt tekstformat der ofte gemmes i databaser eller vises videre til brugere. Fejlen, CVE-2026-8445, betyder at funktionen to_markdown() ikke fjerner eller omskriver tegnene , selv om biblioteket ellers gør det korrekt i sin to_html()-funktion. Det gælder blandt andet tekst fra elementer som title, textarea, noscript og plaintext, hvor indhold normalt tolkes som ren tekst. Konsekvensen er en sanitizer-bypass: en mekanisme, der skal filtrere farligt indhold, kan snydes, fordi rå HTML-kode, herunder scripts, slipper igennem uændret til Markdown-outputtet. Rammes dette output senere af en visning, der tolker det som HTML, kan koden udføres i besøgendes browser. Sårbarheden er klassificeret som CWE-79, cross-site scripting.
Hvem rammer det?
Sårbarheden rammer alle systemer, der bruger justhtml version 1.11.0 eller ældre til at konvertere brugerindsendt eller ekstern HTML til Markdown. Det gælder typisk CMS-løsninger, wiki- og dokumentationsværktøjer, kommentarfelter, chatfunktioner og systemer, der lader brugere indsende formateret tekst. Danske virksomheder og kommuner, der har bygget egne løsninger med dette bibliotek, eller som bruger tredjepartssystemer, der afhænger af det, bør undersøge deres kodebase og afhængigheder.
Hvad kan ske?
En angriber kan indsende tekst med skjult HTML-kode, for eksempel via et titelfelt eller en kommentar, som konverteres til Markdown og senere vises som HTML i en browser hos en anden bruger eller administrator. Herved kan angriberen få kode til at køre i offerets browser, stjæle sessions-cookies, udgive sig for offeret eller ændre indhold på siden. I en dansk virksomhed kan det betyde, at en kunde eller medarbejder uforvarende udfører handlinger på vegne af en angriber, eller at følsomme oplysninger lækkes fra en administrationsside.
Hvor alvorligt er det?
CVSS-scoren er 9,8 ud af 10, kritisk. Angrebet kræver ikke login og ingen handling fra offeret for selve indsendelsen af skadeligt indhold, og det kan udføres over netværket med lav kompleksitet. Den fulde effekt, at koden reelt udføres, afhænger dog af, at den efterfølgende Markdown-visning tolkes som HTML uden yderligere rensning. Der er ikke oplysninger om, at sårbarheden aktivt udnyttes i angreb på tidspunktet for offentliggørelsen, men den tekniske detaljegrad i beskrivelsen gør det realistisk at forudsige udnyttelse.
Hvad gør jeg nu?
Følg disse skridt for at fjerne risikoen:
- Opdatér justhtml til version 1.12.0 eller nyere i alle systemer og afhængigheder, hvor biblioteket bruges.
- Kortlæg hvilke applikationer og tjenester i jeres organisation, der afhænger af justhtml, direkte eller via andre biblioteker.
- Gennemgå steder, hvor Markdown-output fra biblioteket senere vises som HTML, og tilføj rensning der som ekstra sikkerhedslag.
- Test opdateringen i et testmiljø, hvis muligt, før den rulles ud i produktion, for at sikre at eksisterende Markdown-formatering ikke ændres uventet.
- Gennemgå logs for mistænkelige indsendelser med tegnene i tekstfelter, hvis I ikke allerede har opdateret.
- Kontakt en ekstern sikkerhedsrådgiver, hvis I ikke selv kan identificere, om og hvor biblioteket bruges i jeres systemer.
Opdatér inden for 7 dage
Vi anbefaler, at I opdaterer justhtml til version 1.12.0 hurtigst muligt, hvis biblioteket bruges i systemer, der behandler brugerindsendt indhold. Det er en simpel versionsopdatering med lav risiko for driftsforstyrrelser. I kan vente til næste planlagte vedligeholdelsesvindue, hvis I kan bekræfte, at Markdown-outputtet fra jeres system aldrig vises som HTML uden yderligere rensning, men vi fraråder at lade det stå ubehandlet i mere end en uge, givet den kritiske CVSS-score.
Tidslinje
Konkrete eksempler
Intern wiki hos en dansk kommune
En kommune bruger et internt wikisystem, der lader medarbejdere skrive sider i HTML, som derefter konverteres til Markdown og gemmes i en database. En medarbejder indsætter, uden at vide det, en side kopieret fra en ekstern kilde med skjult script-kode i et title-element. Når en administrator senere åbner siden i redigeringsvisning, der viser den gemte Markdown som HTML, udføres koden i administratorens browser og kan bruges til at stjæle dennes login-session.
Ofte stillede spørgsmål
Bruger vi justhtml uden at vide det?
Det er muligt, hvis I bruger tredjepartssystemer til dokumentation, wikier eller kommentarfunktioner. Undersøg jeres afhængighedsliste, eller bed jeres leverandør bekræfte, om biblioteket bruges, og i hvilken version.
Er vi ramt, hvis vi kun bruger to_html() og ikke to_markdown()?
Nej, sårbarheden ligger specifikt i to_markdown()-funktionen. Bruger jeres system kun to_html(), er I ikke direkte ramt af denne fejl.
Kan vi vente til weekenden med at opdatere?
Er der ikke tegn på aktiv udnyttelse mod jeres system, kan opdateringen planlægges til nærmeste normale vedligeholdelsesvindue inden for få dage. Vent ikke længere end en uge, da sårbarheden er kritisk vurderet.
Skal vi anmelde dette til Datatilsynet?
Kun hvis I konstaterer, at sårbarheden faktisk er blevet udnyttet, og at det har medført et sikkerhedsbrud med personoplysninger. Selve opdateringen af et sårbart bibliotek udløser ikke i sig selv en anmeldelsespligt.
Hvordan tjekker vi, om vi er sårbare?
Find justhtml i jeres afhængighedsfil eller pakkeliste og se versionsnummeret. Er det 1.11.0 eller ældre, og bruger I to_markdown()-funktionen på brugerindsendt indhold, er I sårbare.
Påvirker fejlen også ældre versioner end 1.11.0?
Ja, alle versioner op til og med 1.11.0 er ramt. Kun version 1.12.0 og nyere indeholder rettelsen.
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)
justhtml versions <= 1.11.0 (fixed in 1.12.0) do not sufficiently escape HTML-significant characters (angle brackets) in text nodes when converting a parsed document to Markdown via to_markdown(). While a small set of Markdown metacharacters are escaped, characters such as are preserved, so untrusted input that is safe in to_html() — including entity-decoded text (e.g. <script>) or text from RCDATA/RAWTEXT-parsed elements like
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.