Skip to content

fix(security): ストア/ソケットを owner-only に、PASE 強化、CI・依存更新の締め付け - #25

Merged
nogu3 merged 2 commits into
mainfrom
fix/security-hardening-2026-11
Nov 10, 2026
Merged

nogu3 merged 2 commits into
mainfrom
fix/security-hardening-2026-11

Conversation

@nogu3

@nogu3 nogu3 commented Nov 10, 2026

Copy link
Copy Markdown
Owner

2026-11-10 のセキュリティ監査の指摘をまとめて修正する。

変更

  • 資格情報ストア: KVS / nodes.json / aliases.toml / lock を毎回 0600 で書く。新規に作る store dir は 0700(既存 dir の mode は変えない)。matv の store も同様
  • matd ソケット: socket と lock を 0600。XDG_RUNTIME_DIR 不在時の /tmp/matd.sock フォールバックを廃止。リクエスト行は 1 MiB で打ち切り
  • mat commission: MAT_SETUP_CODE を追加。--help が MAT_THREAD_DATASET の値を表示していた漏れを修正
  • mat-device: PASE 失敗 20 回で commissioning window を閉じる
  • 定数時間比較: PASE cA/cB・CASE Sigma1 destination id・IPK 照合
  • CI / 依存: Renovate に 7 日のクールダウン、Actions を SHA 固定、permissions 明示、--locked

破壊的変更

  • mat_core::socket::default_socket_path{,_from} が Option<PathBuf> を返す。default_socket_candidates{,_from} は XDG 不在で空 Vec
  • XDG_RUNTIME_DIR が無い環境の matd は --socket 必須

検証

  • ローカル task check 合格
  • workflow の変更はこの PR の CI で初めて動く
  • 実機 E2E は未実施

🤖 Generated with Claude Code

nogu3 and others added 2 commits November 10, 2026 13:31
- renovate: minimumReleaseAge 7 日(strict)。Cargo.lock 再生成と脆弱性修正 PR は
  age 検査が効かない/公開直後の版になるため自動マージを止めて人がマージする
- workflow: GITHUB_TOKEN を contents: read に明示、docs.yml の id-token は deploy
  ジョブだけへ。全 action を commit SHA に固定(版はコメントで併記)
- Dockerfile / Taskfile / CI の cargo・cross に --locked

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
2026-11-10 のセキュリティ監査の指摘をまとめて修正する。

- store: KVS(root CA 秘密鍵・IPK)/ nodes.json / aliases.toml / lock を毎回 0600 で
  書く(tmp は O_EXCL で作り直し)。mat / matv が新規に作る store dir は 0700。
  既存 dir の mode は変えない
- matd: socket と lock を 0600 に。XDG_RUNTIME_DIR 不在時の /tmp/matd.sock
  フォールバックを廃止(matd は --socket 必須のエラー、mat は候補なし = 直経路)。
  リクエスト行は 1 MiB で打ち切り parse_error を返して切断
- mat commission: setup code を MAT_SETUP_CODE でも渡せるように。--help が
  MAT_THREAD_DATASET の値を表示していた漏れを hide_env_values で塞ぐ
- mat-device: Pake2 送出後に確立へ至らなかった PASE を失敗と数え、20 回で
  commissioning window を閉じる(窓ごとにカウンタ)
- PASE cA/cB・CASE Sigma1 destination id・IPK 照合を定数時間比較(subtle)に

BREAKING(api): mat_core::socket::default_socket_path{,_from} が Option<PathBuf> を
返し、default_socket_candidates{,_from} は XDG 不在で空 Vec を返す。

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
@nogu3
nogu3 merged commit 8c229c9 into main Nov 10, 2026
2 checks passed
@nogu3
nogu3 deleted the fix/security-hardening-2026-11 branch November 14, 2026 01:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant