PoC files

9 files

File viewing is interactive and short-lived. Downloads are password-protected ZIP archives using password eip.

GitHub

Analysisdeepseek-v4-pro:cloud ·

Technical assessment

The artifact contains a Python script (exploit.py) that sends a crafted Handlebars AST payload to a vulnerable server endpoint to achieve remote code execution. It also includes a JSON payload (poc.json) demonstrating the injection technique. The README describes the vulnerability and provides usage instructions for the exploit.

Backdoor review

No backdoor observed in reviewed code

The supplied evidence consists of a README, Dockerfile, Python exploit script, and a JSON payload file for CVE-2026-33937. All files demonstrate a legitimate proof-of-concept for the described Handlebars.js AST injection vulnerability. The exploit script sends a crafted AST to a local server endpoint to achieve remote code execution, which is the expected behavior for a PoC targeting this CVE. No concealed, deceptive, or unrelated harmful behavior (such as credential theft, persistence, or backdoor access) was observed in any of the reviewed text.

ClassificationExploit
Model confidence98%
AuthenticationNot required
LanguagesPythonJSONMarkdown
Target softwareHandlebars.js
Attack typesRemote Code ExecutionCode InjectionType Confusion
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The artifact includes a fully functional Python script (exploit.py) that actively exploits CVE-2026-33937 by sending a crafted AST payload to a target server to execute arbitrary commands. This is the primary artifact and its purpose is to exercise the vulnerability, not merely detect it. The README describes it as a 'PoC' and provides instructions for using the exploit.

exploit.py:1-80README.md:6README.md:49-64

Requirements

  • A vulnerable Handlebars.js server (versions 4.0.0 through 4.7.8) must be running and accessible, with an endpoint that passes user-controlled input directly to Handlebars.compile().README.md:76-81

Observed behavior

  • The Python script (exploit.py) establishes an interactive shell that repeatedly prompts the user for a command, constructs a malicious Handlebars AST object with the command injected into a NumberLiteral node's value field, and sends it via HTTP POST to a target server endpoint.exploit.py:12-68
  • The injected payload uses process.mainModule.require('child_process').execSync() to execute the supplied command on the server.exploit.py:50-52
  • The script prints the server's response, which is expected to contain the output of the executed command.exploit.py:70-72
  • The poc.json file provides a static example of the AST injection technique using a BooleanLiteral node to execute 'cat /etc/passwd'.poc.json:1-23
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Exploit Payload
process.mainModule.require('child_process').execSync('{safe_cmd}')The Python exploit script constructs an AST payload that injects a call to execSync with user-supplied commands, consistent with the documented RCE vulnerability.exploit.py:52
Exploit Payload
process.mainModule.require('child_process').execSync('cat /etc/passwd')The poc.json file contains a static AST payload that executes 'cat /etc/passwd', demonstrating the same RCE primitive.poc.json:13
Target Endpoint
http://localhost:8080/api/email/previewThe exploit script targets a local server endpoint, which is the intended vulnerable application described in the README.exploit.py:4
Review boundaries

What the analysis did not establish

  • The evidence packet reports complete_artifact_coverage: false and 5 unclassified files (binary or omitted) are not included in the analysis, so the full repository content is not available.
  • The target URL in exploit.py is hardcoded to 'http://localhost:8080/api/email/preview' (line 4) but the README and Dockerfile indicate the application runs on port 12701, suggesting a potential configuration mismatch or that the script is intended for a different deployment.
  • Five files in the repository were not analyzed because they were classified as non-text or binary and only metadata was provided. Their content could not be reviewed.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

Docker lab environments

1
GitHub

Repository root

Created
Vuln labCVE-2026-33937Dockerfile

1 Dockerfile

Analysisdeepseek-v4-pro:cloud ·

Environment assessment

A Dockerized Node.js application (Express + Handlebars 4.7.6) that provides a B2B email preview API. The environment is explicitly documented as a proof-of-concept lab for CVE-2026-33937, a Handlebars AST injection vulnerability leading to remote code execution.

README.md:1-10Dockerfile:1-15app.js:1-42

Lab assessment

Vulnerability lab

The README explicitly states the repository is a proof-of-concept for CVE-2026-33937, describes the vulnerable endpoint, and provides exploit scripts (exploit.py, poc.json). The Dockerfile builds a container running the vulnerable application, and app.js logs a warning about the vulnerable Handlebars version.

README.md:1-10app.js:36-40exploit.py:1-6
Lab shapeDockerfile
ServicesUnknown
Compose manifests0
Dockerfiles1
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

Vulnerable Node.js API Server

Vulnerable target applicationHandlebars template rendering service

An Express server listening on port 8080 inside the container. It exposes a POST /api/email/preview endpoint that passes user-supplied editorTemplateData directly to Handlebars.compile() without sanitization, enabling AST injection. It also serves static files from a 'public' directory.

app.js:1-42Dockerfile:13-15

Exploit Script (exploit.py)

Interactive exploit clientDemonstrates RCE via AST injection

A Python script that sends crafted AST payloads to the /api/email/preview endpoint. It constructs a MustacheStatement with a NumberLiteral node containing injected JavaScript to execute arbitrary shell commands via child_process.execSync, and prints the response.

exploit.py:1-80

Proof-of-Concept Payload (poc.json)

Example malicious AST payload

A JSON file containing a Handlebars AST object with a BooleanLiteral node whose value field includes injected JavaScript to execute 'cat /etc/passwd' via child_process.execSync.

poc.json:1-23

Web UI (public/index.html)

Client-side email builder interfaceDemonstrates legitimate API usage

An HTML page served as static content that provides a form to construct an email template. It sends the compiled template string to the /api/email/preview endpoint for server-side rendering.

public/index.html:1-84

Dockerfile

Container build instructions

Builds an Ubuntu 22.04 image, installs Node.js and npm, copies application source, installs dependencies, exposes port 12701, and runs app.js.

Dockerfile:1-15
CVE assessment

How the supplied evidence relates each vulnerability

CVE-2026-33937

Supported by supplied evidence

The README describes CVE-2026-33937 as a Handlebars AST injection vulnerability affecting versions 4.0.0–4.7.8. The application uses Handlebars 4.7.6 (package.json, package-lock.json) and passes user input directly to Handlebars.compile() (app.js line 17). The provided exploit scripts demonstrate RCE via crafted AST payloads, consistent with the described vulnerability.

README.md:10-20package.json:14app.js:16-17exploit.py:1-80
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Docker must be installed to build and run the container.README.md:30-35
  • The attacker must be able to send HTTP POST requests to the /api/email/preview endpoint (port 12701 on the host, mapped from container port 8080).README.md:50-55Dockerfile:13
  • The application must be running with the vulnerable Handlebars version (4.7.6) and no input validation on editorTemplateData.app.js:16-17package.json:14

Evidence-described exercise path

  1. Build the Docker image using the provided Dockerfile.README.md:32-34
  2. Run the container, mapping port 12701 on the host to the container's application port.README.md:36-38
  3. Send a crafted AST payload to the /api/email/preview endpoint, either via the provided exploit.py script or by manually posting a malicious JSON body.exploit.py:1-80README.md:50-55
  4. Observe remote code execution on the server, demonstrated by command output returned in the HTTP response.exploit.py:70-75
Safety-review evidence

Behaviors behind the stored safety assessment

No harmful behavior observed

All visible behavior is directed at the lab's own vulnerable target. The exploit scripts demonstrate RCE within the containerized application, which is the intended purpose of the vulnerability lab. There is no evidence of host escape, external connections, persistence, credential theft, or destructive actions beyond the lab scope.

exploit.py:1-80poc.json:1-23README.md:1-10
Review boundaries

What the analysis did not establish

  • The packet does not include a docker-compose.yml or runtime configuration beyond the Dockerfile; port mappings and volume mounts are only described in README and package.json scripts, not enforced by the evidence.
  • The exploit scripts target localhost or a hardcoded IP (172.19.0.2), which may not match the actual lab network; this is typical for a PoC but limits reproducibility without adjustment.
  • No network traffic captures or runtime logs are included to confirm actual execution behavior.
Model interpretation

This review is limited to the supplied lab evidence packet. It does not assert that the environment runs, reproduces a vulnerability, or is safe to execute. Contract: eip-docker-lab-analysis-v1.

Linked vulnerabilities

1