⚠️ セキュリティアップデート v0.4.16(TLS 証明書検証の強化を含む)
v0.4.16 は、2026-10-20 に報告された eMudhra 中間 CA の侵害に対応したセキュリティアップデートを含みます。リレーを運用している利用者は、できるだけ早く更新してください。
外部リレーが取得・同梱する CA バンドルから失効したルート CA (AAA Certificate Services / emSign ECC Root CA - G3 等) を SHA-256 指紋で検出し、含まれている場合は起動を中止する(fail closed)ようにしました。Rust 側の TLS 検証ライブラリも更新し、失効した中間 CA を拒否します。
TLS / 証明書まわりのセキュリティ修正
- CA バンドルの指紋検証 — リレーが使う CA バンドルに、侵害・失効したルート CA が含まれていないことを SHA-256 指紋で検証します。該当する CA が含まれる場合は起動を中止し、危険な状態で TLS 接続を続けません(fail closed)。
- 起動時・再利用前の再検証 — リレーの起動時だけでなく、SORAHOST の既存 runtime を再利用する前にも CA を再検証します。Node の代替 TLS 経路も同じ CA バンドルを使って検証します。
- TLS 依存ライブラリの更新 —
rustls-webpki0.103.16(失効した中間 CA の SPKI を拒否)とrustls0.23.46 に更新しました。 - VPS 向けの CA 更新手順 —
ca-certificatesの更新とNAROU_RELAY_CACERTの設定方法をdocs/vps-relay.md/relay.mdに追記しました。
リレー運用者のアップグレード時の注意
- OS の
ca-certificatesを最新に更新してください。 - 独自の CA バンドルを
NAROU_RELAY_CACERT/NAROU_RELAY_CA_FILEで指定している場合は、失効したルート CA を含まないバンドルへ差し替えてください。古いバンドルのままでは、安全のためリレーが起動しません。 - v0.4.15 以前のリレーはこの検証を行いません。リレーを更新できない場合は、少なくとも CA バンドルを更新してください。
その他の変更
- SORAHOST と GCP (Cloud Run) へのリレー配備を非推奨とし、CI から両ホスト向けの検証・配備を削除しました。リレーは VPS (
relay.md/docs/vps-relay.md) または自宅回線 (docs/home-relay.md) で運用します。 - 外部リレーに wget トランスポートを追加し、
NAROU_RELAY_FETCHで取得順を変更できるようにしました。検証済み IP へ接続する使い捨て CONNECT プロキシ経由で接続先を固定し、TLS の SNI・証明書検証は wget に任せます。 - リレー呼び出しを Worker の通常の fetch サブリクエストへ変更し、Worker の User-Agent を native と同じランダム Firefox UA に統一しました。リレーのエンドポイントは GitHub Secret
RELAY_DOMAINからhttps://<domain>として解決します。 - リレー経由の取得で、HTTP/1.1 クライアントへ渡すヘッダ名の大文字小文字を保持するようにしました。
Sec-Fetch-*等を小文字化すると Cloudflare が 403 を返すサイトがあり、リレー経由の取得だけが失敗していた問題を修正しました。 - 作者追跡の自動確認を一括更新の後だけに限定しました。
narou update <ID>のような個別更新では作者ページを確認しません。 - Pixiv の漫画シリーズで、シリーズ情報にタグが無く各話の作品情報にだけタグがある場合に、各話のタグを統合・重複除去してレコードへ反映するようにしました(サイト定義 version 1.6)。既存レコードも次回更新時にタグを追記します。
- GitHub Actions の cache action を v5 へ更新し、Node 24 ランタイムで実行するようにしました。
Full Changelog: v0.4.15...v0.4.16