発見元
code-reviewer Agent レビュー(2026-04-05 セッション、PR #71 + #72 マージ後)
HIGH-1: Linux xdotool PID比較が根本的に不正確 (PR #71)
xdotool getactivewindow getwindowpid はターミナルエミュレータの PID を返す。
現在の実装は process.pid と process.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(セキュリティ + 正確性)
発見元
code-reviewer Agent レビュー(2026-04-05 セッション、PR #71 + #72 マージ後)
HIGH-1: Linux xdotool PID比較が根本的に不正確 (PR #71)
xdotool getactivewindow getwindowpidはターミナルエミュレータの PID を返す。現在の実装は
process.pidとprocess.ppidのみと比較するため、ほぼ常にfalseを返す。プロセスツリー例:
対策:
/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読み込み重要度: HIGH(セキュリティ + 正確性)