CVE-2026-66012: Kritisk fejl i SiYuan-noteprogram
SiYuan før v3.7.2 har en kritisk fejl (CVE-2026-66012), der lader uautoriserede læse hemmeligheder og overtage systemet. Opdatér til v3.7.2.
Hvad er det?
SiYuan er et open source-program til noter og videndeling, der kan køre som en lokal server og dele noter offentligt via en indbygget “Publish”-funktion. Sårbarheden CVE-2026-66012 sidder i endepunktet POST /mcp, der styrer 31 værktøjer til at læse, skrive, omdøbe og slette filer i hele arbejdsområdet. Endepunktet kontrollerer kun, at der overhovedet er logget ind, men tjekker ikke om brugeren har administratorrettigheder eller kun læseadgang. Er Publish-serveren sat op i anonym tilstand, tildeler systemet automatisk besøgende en gyldig adgangstoken med læserettigheder, som også giver adgang til /mcp. Fejltypen kaldes manglende rettighedskontrol (CWE-862): systemet glemmer at tjekke, om den logget-ind bruger faktisk må udføre handlingen.
Hvem rammer det?
Sårbarheden rammer alle installationer af SiYuan i versioner før 3.7.2. Risikoen er størst for organisationer, der har aktiveret Publish-serveren i anonym tilstand (Conf.Publish.Enable=true og Conf.Publish.Auth.Enable=false) for at dele noter offentligt, for eksempel på et fælles netværk, en portal eller internettet. Det gælder typisk mindre teams, konsulenter og videndelingsafdelinger, der bruger SiYuan som fælles notesystem.
Hvad kan ske?
En angriber uden brugerkonto kan sende forespørgsler til /mcp og læse filen conf/conf.json, hvor accessAuthCode, api.token og cookieKey ligger i klartekst. Med disse oplysninger kan angriberen skrive og ændre vilkårlige filer i arbejdsområdet og placere et skadeligt plugin i data/plugins/. Pluginet køres med fulde rettigheder til systemets Node.js-miljø, uden isolation, næste gang skrivebordsprogrammet startes, hvilket giver angriberen fuld kontrol over den administrators computer, der åbner SiYuan.
Hvor alvorligt er det?
Sårbarheden har den højeste mulige CVSS-score, 10,0 ud af 10. Angrebet kræver ikke login, ingen særlige rettigheder og ingen handling fra en bruger. Det kan udføres over netværket af hvem som helst, der kan nå Publish-serveren. Der er ikke oplysninger om, at sårbarheden aktivt udnyttes i praksis pr. offentliggørelsesdatoen, men kombinationen af fuld fjernudnyttelse uden login og mulighed for kodeudførelse gør den kritisk.
Hvad gør jeg nu?
Handlingerne herunder lukker hullet og begrænser skaden, hvis det allerede er udnyttet.
- Opdatér SiYuan til version 3.7.2 eller nyere på alle installationer, både desktop og server.
- Slå Publish-serveren fra eller deaktiver anonym tilstand, indtil opdateringen er gennemført.
- Skift accessAuthCode, api.token og cookieKey i conf/conf.json, hvis Publish har kørt i anonym tilstand.
- Gennemgå mappen data/plugins/ for plugins, I ikke selv har installeret, og fjern dem.
- Kontakt Auroa eller en anden sikkerhedsrådgiver, hvis I har haft Publish eksponeret på internettet og er i tvivl om, hvorvidt systemet er kompromitteret.
Opdatér inden for 24 timer
Vi anbefaler, at I opdaterer SiYuan til v3.7.2 med det samme, især hvis Publish-serveren er sat op i anonym tilstand. Det er ikke forsvarligt at vente til en planlagt opdateringsrunde, fordi angrebet kræver hverken login eller brugerinteraktion. Hvis Publish ikke er aktiveret eller kun kører internt bag et lukket netværk, kan I nøjes med at opdatere ved næste normale vindue, men vi anbefaler stadig at gøre det inden for få dage.
Tidslinje
Konkrete eksempler
Videndelingsteam i en dansk konsulentvirksomhed
Et konsulentfirma bruger SiYuan til at dele interne noter og har aktiveret Publish-serveren i anonym tilstand, så medarbejdere kan tilgå noterne uden login. En angriber finder serveren tilgængelig på internettet, henter conf.json via /mcp og opnår adgang til api.token. Angriberen planter derefter et skadeligt plugin, der giver fuld kontrol over den administrators computer, næste gang SiYuan-skrivebordsprogrammet startes.
Ofte stillede spørgsmål
Er vi ramt af CVE-2026-66012?
I er ramt, hvis I kører SiYuan i en version før 3.7.2. Risikoen er størst, hvis I samtidig har aktiveret Publish-serveren i anonym tilstand, det vil sige uden login for besøgende.
Hvordan tjekker vi, om Publish-serveren kører anonymt?
Se i konfigurationsfilen conf/conf.json, om Publish.Enable står til true og Publish.Auth.Enable står til false. Er begge betingelser opfyldt, kører Publish uden login og er sårbar.
Kan vi vente til weekenden med at opdatere?
Nej, ikke hvis Publish-serveren er tilgængelig fra internettet eller et delt netværk. Angrebet kræver ikke login og kan udføres automatiseret, så eksponeringstiden bør minimeres.
Skal vi skifte adgangskoder og tokens, selv om vi allerede har opdateret?
Ja, hvis Publish har kørt i anonym tilstand før opdateringen. Skift accessAuthCode, api.token og cookieKey, da de kan være læst i klartekst, mens sårbarheden var åben.
Skal vi anmelde hændelsen?
Hvis I finder tegn på, at data er blevet læst eller et plugin er blevet plantet, kan der være tale om en sikkerhedsbrist med persondata, og I bør vurdere anmeldelse til Datatilsynet efter jeres normale procedure.
Hvordan ved vi, om systemet allerede er kompromitteret?
Tjek mappen data/plugins/ for ukendte plugins og gennemgå logfiler for uventet trafik til /mcp-endepunktet. Er der plugins, I ikke selv har installeret, bør I betragte systemet som kompromitteret og søge hjælp.
CVSS-detaljer
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CWE-svaghedstyper
Original NVD-beskrivelse (engelsk)
SiYuan before v3.7.2 contains a missing authorization vulnerability in the POST /mcp kernel endpoint, which is gated only by a general auth check (model.CheckAuth) with no admin-role or read-only enforcement. This exposes 31 MCP tools, including a file tool with list/read/write/delete/rename/copy actions across the entire workspace. When the Publish server is enabled in anonymous mode (Conf.Publish.Enable=true and Conf.Publish.Auth.Enable=false), the Publish reverse proxy attaches an anonymous RoleReader JWT to proxied requests, allowing a remote unauthenticated attacker to reach /mcp. The attacker can read conf/conf.json to extract accessAuthCode, api.token, and cookieKey in plaintext, write arbitrary files in the workspace, and plant a plugin into data/plugins/ that executes with nodeIntegration:true and no contextIsolation on the next desktop launch, leading to administrator takeover.
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.