Web UI・ログイン Cookie・配備時の認証を強化する修正と、保存・EPUB 生成の不具合修正を含みます。
Web UI またはログイン機能を利用している場合は更新を推奨します。
セキュリティ修正
- Web UI の CSRF 判定で、ポートを省略した
Origin(http://127.0.0.1など)をどのポートにも一致するとみなしていた問題を修正しました。同じホストの既定ポートだけを受理します。 - サイト定義の Cookie と一緒に送る保存済みログイン Cookie を、そのログインが持つホストにだけ送るようにしました(挿絵ホストのような第三者のホストへ漏らしません)。
- SORAHOST 配備で、コネクタ (
NAROU_CONNECTOR_TOKEN) があるだけで basic 認証を無効化していた挙動をやめ、NAROU_ALLOW_NO_PASSWORD=1を明示したときだけ認証なしで公開するようにしました。前段の Cloudflare Access 等に認証を任せる場合だけ、この設定を指定してください。 - ローカルストアの挿絵書き込みに、排他的に作成する一時ファイルとアトミックな置換を使用し、予測可能な一時ファイル名を利用した既存ファイルの上書きを防ぎます。
rustlsを 0.23.44 から 0.23.45 へ更新し、TLS 1.3 の暗号化レベルをまたいだ不正なハンドシェイクを受理する問題 (RUSTSEC-2026-0285) に対応しました。- Windows 専用の
tray-iconで不要な Linux 向け既定 feature を無効化し、使用していないglib/proc-macro-errorとその依存を除去しました。GPL / 非 GPL 両方の依存グラフで RustSec 監査の脆弱性・警告は 0 件です。
その他の修正
- 分割保存 (挿絵を S3 等の別ストアへ) 構成で小説を「ファイルごと削除」しても、挿絵の実体が保存先に残る不具合を修正しました。小説プレフィックスの一覧では挿絵側のストアに届かないため、
<小説プレフィックス>/挿絵も明示的に削除します。 - 強更新 (
update.strong) の本文取得が実行予算 (Worker の時間・サブリクエスト上限) の外にあり、予定段階だけで予算を使い切ると同じセクションを毎回取り直して前進しない (チェックポイント 0 のまま部分実行を繰り返す) 不具合を修正しました。予定段階の取得も予算の対象になり、中断しても取得済みの本文は保存されるため、再開は必ず前進します。 - 中断されたダウンロードを再開したとき、中断前に保存された挿絵の対応表 (
.illustration_cache.yaml) が保存されず、実体はあるのに EPUB の挿絵参照が解決できない不具合を修正しました。再開したセクションも索引登録を通します。 - Cloudflare Workers + S3 互換ストレージで、保存済み挿絵の存在確認が 403 になり EPUB に組み込めない問題に対応しました。GET の
Rangeを署名対象から外し、キャッシュがヘッダを除去・変更しても署名が壊れないようにしました。画像の保存キーと索引は変更しません。 - Worker のテキストエラー応答に UTF-8 を明示し、日本語の小説名・保存キーがブラウザで文字化けする問題を修正しました。HEAD 応答も GET と同じ Content-Type を維持します。
- 不明なコマンド・不明なオプションのエラーを標準出力へ出し、narou.rb と同じ終了コード 127 で終了するようにしました。
narou freeze <存在しないID>などのメッセージも標準出力へ統一し、default_args.restore346/default_args.consoleのような narou.rb 由来のコマンド名をnarou settingで読み書きできるように戻しました。 - ライブラリ直下に
.narousettingがある場合は~/.narousettingより優先してグローバル設定を読み書きするようにしました(narou.rb と同じ探索順)。 - Cloudflare Workers で同じ小説を ID / ncode / URL の別表記で指定したジョブが同時に走り、同じ保存先へ二重に書き込む問題を修正しました。まだ登録されていない URL の同一ターゲットも互いに排他します。
- SQLite 管理の旧形式(オブジェクトが base64)から更新するとき、ファイル実体を持たないオブジェクト(Worker、ミラー無し構成)を失わないようにしました。
- Web UI の EPUB ダウンロードで、
convert.keep-txt=falseのときも保存済み本文から組み立て直し、novel.txtを残さないようにしました。S3 などに置いた挿絵は組み立て前に取り出します。 - 挿絵の取得に失敗したときの結果が変換キャッシュに固定され、取得に成功した後も挿絵なしのまま使われ続ける問題を修正しました。
- Worker の EPUB ダウンロードは、保存済み挿絵が読み出し上限 (16 MiB) を超える場合に、一覧・直接確認の時点で 413 を返すようにしました。
- 依存クレート 60 件を既存のバージョン要件内で更新しました。破壊的なバージョン更新は行わず、GPL / 非 GPL の両ライセンス通知も再生成しました。
変更一覧は v0.4.9...v0.4.10 を参照してください。