Skip to content

原文(日本語に翻訳)

ホームディレクトリパス(例: Read(~/Desktop/**) )の deny ルールが、$HOME 経由でパスを参照する Bash コマンドをブロックしない問題を修正。

原文(英語)

Fixed deny rules on home-directory paths (e.g. Read(~/Desktop/**)) not blocking Bash commands that reference the path via $HOME

概要

パーミッション設定で ~/Desktop/** のようなホームディレクトリのパスに対して deny ルールを設定しても、Bash コマンドが $HOME/Desktop/ のように $HOME 変数を使ってパスを参照した場合にブロックされないセキュリティバグが修正されました。修正後は ~$HOME の両方のパス表記が正しく deny ルールの対象になります。

基本的な使い方

パーミッション設定の deny ルールが $HOME 変数を使ったパス参照にも適用されるようになりました:

json
{
  "permissions": {
    "deny": [
      "Read(~/Desktop/**)",
      "Write(~/Documents/private/**)"
    ]
  }
}

修正後は、cat $HOME/Desktop/secret.txt のような $HOME を使ったコマンドも正しくブロックされます。

実践例

セキュリティポリシーの正確な適用

json
// settings.json
{
  "permissions": {
    "deny": [
      "Bash(rm ~/.*)",
      "Read(~/private/**)"
    ]
  }
}

修正前の問題:

bash
# ~/private/** の deny ルールがあっても
cat $HOME/private/credentials.txt  # → ブロックされなかった(バグ)
cat ~/private/credentials.txt      # → 正しくブロックされていた

修正後:

bash
cat $HOME/private/credentials.txt  # → 正しくブロックされる
cat ~/private/credentials.txt      # → 正しくブロックされる

注意点

  • セキュリティに関わる重要な修正です。~$HOME のどちらの表記を使っても deny ルールが正しく適用されるようになりました。
  • 既存の deny ルールを設定している場合、この修正後から $HOME 経由のアクセスもブロックされます。意図していた動作であれば問題ありませんが、$HOME 経由のアクセスを許可したい場合は設定を確認してください。

関連情報