Skip to content

原文(日本語に翻訳)

PowerShellのツール権限チェックを強化:末尾の & バックグラウンドジョブバイパス、-ErrorAction Break デバッガーハング、アーカイブ展開の TOCTOU(Time-of-Check-Time-of-Use)問題、パース失敗時のフォールバックにより拒否ルールが劣化する問題を修正

原文(英語)

Hardened PowerShell tool permission checks: fixed trailing & background job bypass, -ErrorAction Break debugger hang, archive-extraction TOCTOU, and parse-fail fallback deny-rule degradation

概要

Windows環境でのPowerShellコマンド実行における複数のセキュリティ上の問題が修正されました。末尾に & を付けてバックグラウンドジョブとして実行することで権限チェックをバイパスできる問題、-ErrorAction Break でデバッガーがハングする問題、アーカイブ展開時のTOCTOU競合状態、そしてコマンドのパースに失敗した場合に拒否ルールが正常に機能しなくなる問題が全て修正されました。

基本的な使い方

修正内容はセキュリティ強化のため、v2.1.90 にアップデートするだけで改善された権限チェックが適用されます。

PowerShellを使用する環境では:

powershell
# v2.1.90以降: 以下のような回避が不可能になった

# 修正前: これで権限チェックをバイパスできた
some-restricted-command &   # 末尾の & でバックグラウンド実行

# 修正後: バックグラウンドジョブでも権限チェックが適用される

実践例

セキュリティポリシーの適用(Windows環境)

v2.1.90 以降では以下の問題が修正されています:

1. バックグラウンドジョブバイパスの修正

powershell
# 修正前: & をつけることで制限をバイパスできた
Invoke-WebRequest -Uri "http://example.com" &

# 修正後: バックグラウンドジョブでも権限が適用される

2. -ErrorAction Break の修正

powershell
# 修正前: デバッガーがハングする可能性があった
Get-Process -ErrorAction Break

# 修正後: 適切に処理される

3. アーカイブ展開のTOCTOU修正

powershell
# 修正前: アーカイブ展開時に競合状態が発生する可能性があった
Expand-Archive -Path archive.zip -DestinationPath ./output

# 修正後: 安全に展開が処理される

企業環境でのセキュリティポリシー設定

Windows企業環境でのClaude Code設定:

json
{
  "permissions": {
    "deny": [
      "Bash(powershell *restricted-command*)",
      "Bash(powershell *sensitive-operation*)"
    ]
  }
}

v2.1.90 以降では、これらの拒否ルールがパースエラーが発生した場合でも正しく適用されます。

注意点

  • これらの修正は主にWindows環境(PowerShell使用)に影響します
  • macOS/Linux環境のユーザーへの直接的な影響は限定的です
  • セキュリティ強化のため、Windows環境ではv2.1.90への早急なアップデートを推奨します
  • TOCTOUとは「確認時と使用時の時間差」を利用した攻撃手法で、セキュリティ上重要な修正です

関連情報