Technical assessment
The artifact provides a complete, runnable Node.js application (app.js) that intentionally includes a vulnerable custom MikroORM type (JsonOrRawType) and exposes API endpoints. The README.md provides explicit curl commands to send a malicious JSON payload containing a `__raw` property with attacker-controlled SQL, which the application will execute, exfiltrating data from an unrelated table. This constitutes a fully functional exploit environment and proof-of-concept.
Backdoor review
No backdoor observed in reviewed code
The repository contains a proof-of-concept (PoC) for CVE-2026-34220, a SQL injection vulnerability in MikroORM. The code sets up a vulnerable Express application with a custom column type that passes attacker-controlled objects containing a `__raw` property directly into SQL queries. The README documents the vulnerability and provides a curl command to trigger it. No backdoor, trojan, or deceptive behavior targeting the person running the PoC was observed. The application's behavior is consistent with demonstrating the described SQL injection vulnerability.
Model confidence95%
AuthenticationNot required
LanguagesJavaScriptMarkdown
Target softwareMikroORM
Attack typesSQL Injection
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidenceClassification basis and observed behavior
Classification basis
The artifact includes a complete, runnable vulnerable application and explicit instructions (curl command) to trigger the SQL injection vulnerability, resulting in unauthorized data exfiltration. This is code intended to exercise a vulnerability, meeting the definition of an exploit.
README.md:37-64app.js:1-379Requirements
- A running instance of the vulnerable application, which can be built and started using the provided Dockerfile and instructions.
README.md:30-33Dockerfile:1-12
Observed behavior
- The application defines a custom MikroORM type `JsonOrRawType` that passes objects with a `__raw` property directly to the database without sanitization.
app.js:11-17 - The `/api/posts` endpoint accepts user-supplied JSON and creates a database entity with the `content` field, which is of the vulnerable custom type.
app.js:300-316 - The README provides a curl command that sends a JSON payload with `"content": { "__raw": true, "sql": "(SELECT group_concat(name || ': ' || salary, ' / ') FROM salaries)" }`, causing the SQL subquery to be executed and its result stored in the post content.
README.md:43-53 - The application seeds a `salaries` table with sensitive data, including a flag string, which the exploit exfiltrates.
app.js:54-71
Safety-review evidenceBehaviors behind the backdoor verdict
Observables
- Vulnerability Demonstration
- Custom type JsonOrRawType in app.js passes objects with '__raw' property directly to SQL queriesThis is the core of the demonstrated CVE-2026-34220 SQL injection vulnerability, not a backdoor.
app.js:11-17 - Sensitive Data Seed
- FLAG = EQST{r4w_qu3ry_fr4gm3nt_1nj3ct10n}A flag string is seeded into the database as part of the PoC scenario to demonstrate data exfiltration via SQL injection.
app.js:70 - Poc Instruction
- curl command in README.md sends a JSON payload with __raw and sql properties to trigger SQL injectionThis is the documented PoC trigger, not a backdoor command.
README.md:43-53
Review boundariesWhat the analysis did not establish
- One file (likely a binary or non-text asset) was omitted from the evidence; its absence does not affect the classification of the provided text files as an exploit.
- The evidence packet reports complete_artifact_coverage as false, but all readable selected text files are fully included.
- One file (package-lock.json or similar) was omitted from the text evidence; its content was not reviewed, but it is typically a dependency lock file and unlikely to contain backdoor logic.
- Binary files were not present in the evidence.
- The review is limited to the supplied text content and does not include dynamic analysis or execution of the code.
Model interpretationThis review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.