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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions