Repository navigation
A security and bug-fix release for the v0.27 line. It closes a way for a
remote mount to publish script through a Mermaid diagram, filters every
server-rendered diagram before it reaches a page, takes two dependency
advisories, and fixes the licence CLI problems a review of 0.27.4 found.
Cut from the release/0.27.x maintenance branch rather than from master,
so anyone whose licence ceiling is 0.27 can take it.
Security
- Diagrams can no longer carry script into a page. A Mermaid
style,
classDeforlinkStylevalue with a quote in it became an event handler
in the rendered SVG, and aclicktarget kept any scheme,javascript:
included. Diagrams render after the escaping that keeps a remote mount's
raw HTML inert, so a third-party page withoutallow_htmlcould publish
script through amermaidfence. The Mermaid renderer now keeps only
style values made of the characters colours and lengths need, and only
http,https,mailtoand relativeclicklinks. Independently, every
server-rendered diagram, from Mermaid, Svgbob or a plugin, now passes a
filter before the page is written: only SVG drawing elements survive,
event handlers and links with any other scheme are removed, and a
stylesheet that could load from another host is dropped. Diagrams cached
before the update are rendered again. - Webhook and preview-token signatures are compared in constant time
again. RUSTSEC-2026-0385:ctutilsbefore 0.4.4 could compile the
comparison behind HMAC verification to a branch, which leaks timing. That
comparison checks git webhook signatures, CDN webhook signatures and
preview tokens; measuring the leak over a network is hard, but it is what
a signature-forging attack needs. Accent now locksctutils0.4.5. - tokio 1.53.3. RUSTSEC-2026-0386 reports that
tokio'sAsyncFd
constructors accept file descriptors the caller does not own. Accent
never constructs one, so nothing was exposed; the patch release clears
the warning.
Fixed
accent license activatefails when it refuses a key. An empty,
invalid, or unknown-edition key printed an error but exited 0, so a CI job
that installs a key could not tell it failed. It now exits 1, as does
buyorrenewwhen the key it receives is refused or never arrives.accent license deactivateremoves any key in the file. An invalid or
lapsed key read as "no license key configured" and could not be removed.
The command now removes whatever keyconfig.yamlholds, and says when a
key inACCENTCMS_LICENSEstays in effect instead of claiming the server
will run without one.accent license renewandrefundwork outside a site directory. Like
status, they now take the key fromACCENTCMS_LICENSEwhen the current
directory has noconfig.yaml.- The
accent license buyedition prompt no longer chooses for you. An
empty or unknown answer picked Standard; the prompt now asks again, and a
run without a terminal must pass--edition. The Pro line no longer lists
the gRPC API, which has not shipped. - License typos are reported as typos. An unknown
--editionor
--cadencesaid "internal server error"; the message now names the value
and the choices. accent license refundopens the right customer portal. It opened
polar.sh/accentcms/portal, which does not exist; it now opens
polar.sh/accentx/portal, where you sign in to manage or refund your
subscription.- Docs pages are described as technical articles again. The JSON-LD
auto-detection checked for a date and an author before it checked for a
/docs/URL, so every docs page with both was published as a
BlogPosting. Pages under/docs/now getTechArticle; anewstag,
a price, a version or an event location still takes precedence.
Verifying your download
curl -fsSLO https://raw.githubusercontent.com/AccentCMS/accent/main/release-signing-key.asc
gpg --import release-signing-key.asc
gpg --verify checksums-v0.27.5.txt.asc checksums-v0.27.5.txt
sha256sum -c --ignore-missing checksums-v0.27.5.txt