Skip to content

fix: Linux notification PID comparison walks process tree + symlink rules validation #73

@terisuke

Description

@terisuke

発見元

code-reviewer Agent レビュー(2026-04-05 セッション、PR #71 + #72 マージ後)

HIGH-1: Linux xdotool PID比較が根本的に不正確 (PR #71)

xdotool getactivewindow getwindowpid はターミナルエミュレータの PID を返す。
現在の実装は process.pidprocess.ppid のみと比較するため、ほぼ常に false を返す。

プロセスツリー例:

terminal-emulator (xdotool が返す PID)
  -> bash/zsh
    -> bun/node (process.pid)

対策: /proc/[pid]/stat を辿ってプロセスツリーを上方向に走査し、xdotool PID が祖先かどうかを確認。

HIGH-2: symlink 経由のパス走査脆弱性 (PR #72)

.opencode/rules/ に symlink を配置すると任意ファイルが LLM コンテキストに注入される可能性。
例: rules/evil.md -> ~/.ssh/id_rsa

対策: glob 結果に fs.realpath を適用し、resolve 後のパスが rules ディレクトリ内に留まることを検証。

MEDIUM: basename override に防御コメント追加 (PR #72)

glob が **/*.md に変更された場合、basename のみの override が壊れる。
防御コメントまたは relative path ベースの override に変更。

影響箇所

  • packages/opencode/src/notification/index.ts — Linux分岐
  • packages/opencode/src/session/instruction.ts — rules読み込み
  • テスト追加: symlink テスト、darwin テスト

重要度: HIGH(セキュリティ + 正確性)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions