[1.4.2] - 2026-10-25
Changed
- A provisioned repository signing key must be Ed25519 (Action may be needed) — NORA signed rpm/deb indexes with whatever key it found at
signing.key_path, including RSA and ECDSA keys, whose secret arithmetic runs through dependencies that are not constant-time (rsa,crypto-bigint0.5). A key at that path whose primary key is not Ed25519 now stops the server from starting with an error naming the algorithm and exit status 78, which the packaged systemd units do not restart into (a key file that does not parse stops the same way; one that cannot be read keeps exit status 1), and the file is left as it is; a key NORA generated itself is Ed25519 and is unaffected. If you provisioned your own RSA or ECDSA key, replace it with an Ed25519 one (or remove the file to let NORA generate one) and re-distribute the public key to clients before upgrading. With that, RUSTSEC-2026-0387 (crypto-bigint) does not apply to NORA and is recorded as an accepted exclusion inSECURITY.md.
Security
webpki-roots1.0.9 → 1.0.11 andrustls-webpki0.103.15 → 0.103.16 (eMudhra distrust, RUSTSEC-2026-0382) — reqwest is built withrustls-tls, so upstreams are verified against the roots compiled in fromwebpki-roots, not the system store. 1.0.9 still trustsemSign ECC Root CA - G3, the root above the revokedEM DV TLS CA - G3Bintermediate, so an upstream (or a man in the middle) presenting a certificate from that chain was accepted. 1.0.10 removes the emSign G3 root, 1.0.11 also removesemSign Root CA - C1andemSign ECC Root CA - C3(Mozilla bug 2083709).rustls-webpki0.103.16 fixes certificate verification accepting distrusted intermediates (RUSTSEC-2026-0382), whichcargo auditflags against 0.103.15. Lock-only bumps, no code change. Fixed by @obervinov.- tokio 1.53.3 (RUSTSEC-2026-0386, #1173) —
tokio::io::unix::AsyncFdconstructors that accepted any file descriptor are deprecated upstream as an I/O-safety violation; NORA does not constructAsyncFditself, and 1.53.3 is the patched release in the same minor line. Lock-only. - A request path that still holds a percent sign after one decode is refused at the edge (GHSA-4pcp-mwwr-fjj6) — a raw
%25in the request path is an encoded percent sign: the name a handler validated after the router decoded the path once still carried a%XXthat a later decode resolved — when NORA built an upstream URL, or at the upstream server itself — which could re-introduce..//past the name and path checks, or let a blocked or internal name through. A registry path never carries a literal%, so an edge check now answers400for any path that still holds a%once decoded —%25at any depth, or a%that opens no%HHescape — before authentication and before any handler, for every format and method, over HTTP/1.1 and HTTP/2; the null-byte check keeps precedence. A singly encoded path (%2F,%40,%2e) is handled as before. No configuration change.
Install
# x86_64
curl -LO https://github.com/getnora-io/nora/releases/download/v1.4.2/nora-linux-amd64
chmod +x nora-linux-amd64
sudo mv nora-linux-amd64 /usr/local/bin/nora
# ARM64 (Apple Silicon, Graviton, Ampere)
curl -LO https://github.com/getnora-io/nora/releases/download/v1.4.2/nora-linux-arm64
chmod +x nora-linux-arm64
sudo mv nora-linux-arm64 /usr/local/bin/noraDocker
docker pull getnora/nora:1.4.2| Variant | Image | Platforms |
|---|---|---|
| Alpine (default) | getnora/nora:1.4.2
| amd64, arm64 |
| RED OS | getnora/nora:1.4.2-redos
| amd64 |
| Astra Linux SE | getnora/nora:1.4.2-astra
| amd64 |
| GHCR | ghcr.io/getnora-io/nora:1.4.2
| amd64, arm64 |
DEB / RPM
# Debian / Ubuntu / Astra Linux (amd64)
curl -LO https://github.com/getnora-io/nora/releases/download/v1.4.2/nora-amd64.deb
sudo dpkg -i nora-amd64.deb
# RHEL / Fedora / RED OS (amd64)
curl -LO https://github.com/getnora-io/nora/releases/download/v1.4.2/nora-amd64.rpm
sudo rpm -i nora-amd64.rpmChangelog
See CHANGELOG.md