github Rumia-Channel/narou.rs v0.4.17

10 hours ago

⚠️ セキュリティアップデート v0.4.17

v0.4.17 は複数のセキュリティ上の問題を修正したアップデートです。すべての利用者に更新を強く推奨します。

特に、ローカル Web UI の認証追加、セルフアップデートの改ざん検証、上流コンテンツ由来の過大メモリ消費対策、ログイン情報の保護強化を含みます。旧バージョンにはこれらの保護がないため、公開環境・ローカル環境を問わず、できるだけ早く v0.4.17 へ更新してください。

セキュリティ修正

  • loopback Web UI に認証を追加 — 127.0.0.1 / localhost / ::1 に bind し Basic 認証もリバースプロキシも使わない構成では、narou web が起動ごとの一度きりチケットを URL でブラウザへ渡し、/ で 30 日有効の HttpOnly / SameSite=Strict Cookie (narou_ui_token) に交換します。/api/*・/ws・/novels/{id}/download はこの Cookie または x-narou-internal-token を要求し、同じ PC 上の別ユーザー・別プロセスからの操作や読み取りを防ぎます。トークンは .narou/ui_token (0600) に保存し、再起動後もセッションを維持します。
  • セルフアップデートの改ざん検証 — 呼び出し元が任意の更新 URL (asset_url) を指定できる経路を廃止し、GitHub Releases API が返す資産だけを使用します。ダウンロード後に Release asset の SHA-256 digest とサイズを照合し、欠落・不一致の場合はインストールせず中止します。
  • Web UI のクリックジャッキング・プロキシ設定の保護 — 全レスポンスに X-Frame-Options: DENY、Content-Security-Policy: frame-ancestors 'none'、X-Content-Type-Options: nosniff、Referrer-Policy: no-referrer を付与します。server-reverse-proxy.enable=true でも Host の許可リストを維持し、公開ホストは server-add-accepted-hosts、WebSocket は server-ws-add-accepted-domains に明示する必要があります。外部 bind で Basic 認証が平文 HTTP の場合、または認証が無効な場合は起動時に警告します。
  • 上流コンテンツ由来の OOM・パス操作対策 — うごイラのフレーム ZIP は 1 フレーム 16 MiB の宣言サイズ・読み出し上限と、復号前のヘッダ寸法 (1920×1080) で検証します。EPUB に取り込む非リモート <img src> は小説ディレクトリ内の相対パスだけを許可し、..・絶対パス・ドライブ/UNC パスを拒否します。変換の URL stash を可変長トークン化し、6,143 件超の URL 消失と約105万件での panic を修正しました。
  • ログイン情報の保護強化 — narou login export / narou_rs_login --export は 8 文字未満のパスフレーズを拒否し、Unix では 0600・シンボリックリンク非追従で書き出します (取り込みは旧ファイル互換のため任意長を許可)。narou_rs_login のブラウザは空きポートを自動選択し、DevToolsActivePort と /json/version の WebSocket URL を検証します。SQLite の db.sqlite / -wal / -shm は Unix で 0600 にし、ライブラリバックアップから .narou/login.key と .narou/ui_token を除外しました。
  • Worker / relay / CI — 外部リレーの接続先は https 必須 (ループバックのみ http 可) とし、スキーム省略時の暗黙 http:// 補完を廃止しました。deploy の wrangler を 4.151.3 に固定し、CI の NAROU_ADMIN_TOKEN は 32 文字以上を要求します。

一般不具合の修正

  • narou update の一括変換で、旧セクション変換キャッシュの移行が並列変換と競合して Convert error: IO error になる問題を修正 (#39)。
  • convert.keep-txt=true で同じ内容の novel.txt が重複生成される問題を修正 (#40)。
  • ダイジェスト自動選択で非終端アクションの後に暗黙のキャンセルが実行される問題、保存フォルダが Documents を開く問題、CLI の選択待ち中に進捗バーが残る問題を修正 (#41)。
  • enable_half_indent_bracket / enable_auto_indent / enable_force_indent が既定・個別・force のいずれでも効かない問題を修正 (#42)。
  • Web UI の凍結作品スキップがエラー扱いになる問題と、「凍結済みでも更新」が選択作品を無視する問題を修正 (#43)。
  • Web UI でダウンロードを中断すると、当該小説の更新が実行されなくなる問題を修正 (#44)。

アップグレード時の注意

  • loopback Web UI はベース URL を直接開くと API が 401 になります。narou web 起動時に自動で開く URL (--no-browser では表示される URL) を使用してください。
  • リバースプロキシ構成では、公開ホストと WebSocket ドメインを許可リストへ追加してください。
  • リレーを http:// またはスキーム省略で設定している場合は https:// に変更してください。
  • NAROU_ADMIN_TOKEN が 32 文字未満の場合は、次回デプロイ前にローテーションしてください。
  • 8 文字未満のパスフレーズでの書き出しは拒否されます。
  • インデント系設定の修正により変換結果が変わります。必要な場合は再変換してください (既存のセクション変換キャッシュは自動で無効化されます)。

Full Changelog: v0.4.16...v0.4.17

Don't miss a new narou.rs release

NewReleases is sending notifications on new releases.