Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-52618 — CVE-2026-52618을 문서화하며, @webfer/mcp-ansible-drupal의 executeDeployment extraVars를 통한 OS 명령 주입에 대한 PoC와 함께 탐지 지침 및 완화 조치를 제공합니다. | Kitploit
도구/GitHubGitHub/s1ko/cve-2026-52618
Vulnerability AnalysisExploitationAI Security
GitHubs1ko/cve-2026-52618

CVE-2026-52618

CVE-2026-52618을 문서화하며, @webfer/mcp-ansible-drupal의 executeDeployment extraVars를 통한 OS 명령 주입에 대한 PoC와 함께 탐지 지침 및 완화 조치를 제공합니다.

저장소 보기
1일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-52618 — @webfer/mcp-ansible-drupal: executeDeployment extra vars를 통한 OS 명령 주입

spawn(cmd[0], cmd.slice(1), { shell: true })는 인자 배열을 이스케이프 없이 단일 /bin/sh -c 문자열로 다시 결합하므로, executeDeployment MCP 도구에 제공된 extraVars 값에 포함된 셸 메타문자가 서버가 실행 중인 호스트에서 실행됩니다.

이 문제는 수정되었습니다. 2.0.3 이상으로 업그레이드하세요.

위협 모델

MCP 도구 인자는 공격자에 의해 영향을 받습니다. 이 인자는 에이전트가 처리하는 콘텐츠(문서, 웹 페이지, 도구 출력)에서 LLM이 생성하므로, 간접 프롬프트 인젝션을 통해 공격자가 도구 핸들러가 수신하는 값을 제어할 수 있습니다. 해당 값 중 하나라도 셸에 전달하는 핸들러는 그 영향력을 MCP 서버가 실행 중인 호스트에서의 코드 실행으로 전환합니다. 이는 aws-mcp-server / CVE-2026-5058 선례와 동일한 모델입니다.

결과적으로 "호출자는 신뢰할 수 있는 LLM"이라는 것은 완화 조치가 아닙니다. 도구 인자는 신뢰할 수 없는 입력입니다.

실행

2.0.0의 src/helpers/runAnsible.ts는 인자 배열을 구성한 다음 셸을 활성화한 상태로 실행했습니다:

root@kitploit:~
const proc = spawn(ansibleCmd[0], ansibleCmd.slice(1), { shell: true });

shell: true를 사용하면 Node는 나머지 요소를 argv로 사용하여 ansibleCmd[0]을 실행하지 않습니다. 전체 배열을 하나의 문자열로 결합하여 따옴표나 이스케이프를 적용하지 않고 /bin/sh -c에 전달합니다. 따라서 ;, &&, |, 백틱 또는 $()를 담은 요소는 의도된 명령에서 벗어나 실행됩니다.

도달 가능한 경로는 executeDeployment MCP 도구(src/tools/executeDeployment.ts)로, 호출자가 제공한 extraVars를 --extra-vars key=value로 배열에 전달합니다. 값이 ; touch /tmp/marker ;일 경우 다음이 생성됩니다:

root@kitploit:~
/bin/sh -c "ansible-playbook -i inv.ini play.yml ... --extra-vars deploy_env=; touch /tmp/marker ; echo INJECTED"

같은 버전의 보조 싱크는 projectRoot를 execSync('ansible-vault encrypt ' + vaultPath)에 보간했습니다.

재현

poc/driver.mjs는 조작된 extraVars 값으로 runAnsible을 직접 호출하고 마커 파일을 확인합니다. ansible-playbook이 설치되어 있을 필요는 없습니다. 주입된 명령은 선행 바이너리가 존재하는지 여부와 관계없이 동일한 /bin/sh -c 문자열에서 실행되기 때문입니다.

root@kitploit:~
npm pack @webfer/[email protected] && tar xf webfer-mcp-ansible-drupal-2.0.0.tgz
node poc/driver.mjs

영향을 받는 버전에서 기대되는 결과:

root@kitploit:~
{"target":"@webfer/mcp-ansible-drupal 2.0.0","sink":"runAnsible -> spawn(cmd[0], cmd.slice(1), {shell:true})","vector":"executeDeployment extraVars value","marker":"/tmp/PWNED_ansible","created":true,"verdict":"CONFIRMED - command injection executed"}

2026-06-01에 격리된 컨테이너에서 검증되었고, 2026-06-13에 무해한 touch 마커로 재검증되었습니다. 테스트 권한이 있는 인프라에서만 실행하십시오.

탐지

  • ;, &&, ||, |, 백틱 또는 $(를 포함하여 ansible-playbook에 도달하는 모든 --extra-vars 값. 합법적인 Ansible 변수 값은 사실상 절대 이를 포함하지 않습니다.
  • 명령줄에 ansible-playbook 및 구분 기호 뒤의 두 번째 명령이 포함된 sh -c 프로세스 — 애플리케이션 로깅에 의존하지 않는 프로세스 트리 신호(auditd, eBPF, Falco, EDR).
  • MCP 서버 프로세스의 예기치 않은 자식 프로세스. ansible-playbook, git, ansible-vault는 예상되지만, 셸, 인터프리터 또는 네트워크 클라이언트는 예상되지 않습니다.
  • executeDeployment 인자에 셸 메타문자가 포함된 MCP 도구 호출 로그. 도구 인자를 로깅하십시오 — 대부분의 MCP 배포는 이를 로깅하지 않으며, 이는 애플리케이션 관점에서 주입된 값이 보이는 유일한 곳입니다.

MITRE ATT&CK T1059.004 명령 및 스크립팅 인터프리터: Unix 셸.

완화 조치

@webfer/mcp-ansible-drupal 2.0.3 이상으로 업그레이드하세요. 현재 소스는 shell 옵션 없이 spawn(ansibleCmd[0], ansibleCmd.slice(1), { … })를 호출하므로 배열이 argv로 전달되고 메타문자는 의미를 잃습니다.

MCP 도구 핸들러에 대한 일반 규칙(그리고 이 수정 사항이 적용하는 것):

  • 인자 배열이 이미 사용 가능한 경우 shell: true를 절대 활성화하지 마십시오. 배열 형태는 바로 셸을 피하기 위해 존재합니다.
  • 도구 인자의 문자열 보간으로 명령을 절대 구성하지 마십시오. 명시적 인자 벡터와 함께 execFile/spawn을 사용하십시오.
  • 유형뿐만 아니라 콘텐츠도 검증하십시오. Zod의 z.string()은 값이 문자열임을 증명할 뿐 그 내용에 대해서는 아무것도 증명하지 않습니다. 값 집합이 알려진 경우 허용 목록을 사용하고, 그렇지 않은 경우 셸 메타문자를 거부하십시오.
  • MCP 서버를 권한 없는 사용자로 실행하고 도구가 실제로 필요한 가장 좁은 파일 시스템 및 네트워크 범위를 부여하십시오.

NIST SP 800-53r5 SI-10; OWASP ASVS v4 §5.3.8; CWE-78 완화 조치 M1 및 M2.

타임라인

날짜이벤트
2026-06-012.0.0에 대한 취약점 동적 검증

참조

  • npm 패키지 — https://www.npmjs.com/package/@webfer/mcp-ansible-drupal
  • 저장소 — https://github.com/webfer/MCP-Ansible-Drupal
  • MCP 위협 모델의 선례 — CVE-2026-5058 (aws-mcp-server)

동일한 연구 과정에서 나온 동반 권고문: CVE-2026-52616, CVE-2026-52617.

라이선스

MIT — LICENSE 참조.

도구 다운로드
CVECVE-2026-52618
CWECWE-78 (OS 명령에 사용되는 특수 요소의 부적절한 중화)
패키지@webfer/mcp-ansible-drupal (npm)
영향받는 버전2.0.0
수정 버전2.0.3 (2026-06-01 게시)
CVSS v3.1AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 7.8 High (stdio 전송). 서버가 네트워크 전송으로 래핑된 경우 AV:N → 9.8 Critical.
보고자s1ko (github.com/s1ko, [email protected])
CVE 할당2026-07-13, MITRE CNA-LR
2026-06-01
shell: true가 제거된 2.0.3이 npm에 게시됨
2026-06-13두 번째 호스트에서 재검증
2026-07-13MITRE CNA-LR이 CVE-2026-52618 할당, s1ko가 발견자로 기록됨
2026-08-22본 분석 문서 게시