Record summary

CVE-2025-26794 has a selected CVSS score of 7.5 (high); EIP currently links 3 repository PoCs and 2 lab environments.

Description

Exim 4.98 before 4.98.1, when SQLite hints and ETRN serialization are used, allows remote SQL injection. (Resolving SQL injection requires an update to 4.99.1 in certain non-default rate-limit configurations.)

Description source: CVE List

Exploitation context

Available material

Repository PoCs
3
Lab environments
2

CISA SSVC decision

ExploitationNone
AutomatableYes
Technical impactPartial

CISA Coordinator · SSVC 2.0.3 · Evaluated Feb 21, 2025 · Source: CVE List

Affected products and versions

1
ProductSourceVersion rangeStatus

Default status: unaffected

CVE List4.98 to < 4.98.1affected

Proofs of concept

3

Repository PoCs

GitHubXploitGh0st/CVE-2025-26794-exploitRepository PoCby XploitGh0stStars: 0Exploit3 files

23.4 KiB

GitHub

PoC details
Analysisdeepseek-v4-pro:cloud ·

Technical assessment

A Python-based exploit tool for CVE-2025-26794 that performs time-based blind SQL injection against Exim 4.98 via the ETRN command. It extracts database tables, columns, and data using binary search, and includes an interactive SQL query mode.

Backdoor review

No backdoor observed in reviewed code

The repository contains a proof-of-concept exploit for CVE-2025-26794, an SQL injection vulnerability in Exim 4.98. The Python script (exploit.py) implements time-based blind SQL injection against a remote SMTP server using the ETRN command. All code is consistent with the stated purpose of authorized penetration testing and data extraction. No concealed executable behavior, persistence mechanisms, credential theft, or unrelated payloads were observed. The script uses only standard library modules and performs no network activity beyond connecting to the user-supplied target.

ClassificationExploit
Model confidence98%
AuthenticationNot required
LanguagesPython
Target softwareExim
Attack typesSQL InjectionTime-based Blind SQL Injection
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The artifact contains functional Python code that actively exploits CVE-2025-26794 by sending malicious SQL injection payloads to extract data from a target Exim server. It is not limited to detection or scanning; it performs data extraction and includes an interactive query mode.

exploit.py:88-91exploit.py:110-149exploit.py:239-264

Requirements

  • Target must be running Exim 4.98 with SQLite DBM storage and ETRN serialization enabled.README.md:24-27
  • Network access to the target SMTP service (default port 25).README.md:38-39

Observed behavior

  • Establishes an SMTP connection and sends a normal ETRN command to measure baseline response time.exploit.py:81-83
  • Sends a crafted ETRN command containing a time-delay SQL injection payload to confirm vulnerability.exploit.py:88-91
  • Extracts database table names by querying sqlite_master via time-based blind SQL injection.exploit.py:184-188
  • Extracts column names using pragma_table_info and extracts data from tables using binary search over ASCII values.exploit.py:206-209exploit.py:110-149
  • Provides an interactive mode for executing arbitrary SQLite queries and extracting results.exploit.py:239-264
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Network Connection
Payload withheldThe script connects to a user-supplied SMTP target to deliver SQL injection payloads, consistent with the stated exploit behavior.exploit.py:53
Sql Injection Payload
Payload withheldThe core exploit payload uses a time-delay technique to perform blind SQL injection, matching the described vulnerability.exploit.py:89exploit.py:46
Authorization Prompt
Payload withheldThe script includes a runtime authorization check before proceeding, reinforcing the stated educational and authorized-testing purpose.exploit.py:365-368
Review boundaries

What the analysis did not establish

  • Evidence does not include execution output or verification that the exploit works against a live target.
  • The artifact's README.md contains a badge stating 'Status: PoC' but the code implements full data extraction, not just proof of concept.
  • No binary files were present in the repository; the review covers only the three text files (README.md, exploit.py, requirements.txt).
  • The review does not assess whether the exploit is functional or effective against a real target.
  • The artifact's author identity (XploitGh0st) and repository name are noted but not treated as evidence of backdoor behavior.
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.

GitHubOscarBataille/CVE-2025-26794Repository PoCby OscarBatailleStars: 15Not analyzed8 files

53.7 KiB

GitHub

PoC details
GitHubishwardeepp/CVE-2025-26794-Exim-Mail-SQLiRepository PoCby ishwardeeppStars: 0Not analyzed6 files

46.0 KiB

GitHub

PoC details

Docker lab environments

2
GitHub

files

ishwardeepp/CVE-2025-26794-Exim-Mail-SQLiCreated
Vuln labCVE-2025-26794Dockerfile

1 Dockerfile

Analysisdeepseek-v4-pro:cloud ·

Environment assessment

A Docker-based environment that builds Exim 4.98 from source with debug flags and SQLite support, copies a runtime configuration and a start script, and runs the Exim daemon. The repository name and start script comment suggest it is intended for CVE-2025-26794 research.

files/Dockerfile:1-36files/start-exim.sh:1-3

Lab assessment

Vulnerability lab

The repository is named 'CVE-2025-26794-Exim-Mail-SQLi', the Dockerfile builds a specific Exim version with debug symbols and SQLite, and the start script contains a commented-out lookup expression that resembles an SQL injection test, all consistent with a vulnerability reproduction environment.

files/Dockerfile:1-36files/start-exim.sh:1-3
Lab shapeDockerfile
ServicesUnknown
Compose manifests0
Dockerfiles1
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

Dockerfile

builds Exim 4.98 with debug and SQLite supportcreates exim-demo usercopies start script and runtime config

A multi-stage Dockerfile based on Debian that installs build dependencies, clones the Exim repository, checks out tag exim-4.98, configures Local/Makefile with EXIM_USER=poc-user, AUTH_PLAINTEXT, USE_OPENSSL, USE_SQLITE, and debug flags, then builds and installs Exim. It copies start-exim.sh and a configure file into the image.

files/Dockerfile:1-36

start-exim.sh

starts Exim daemon with debug outputcontains commented SQL injection test

A shell script that runs '/usr/exim/bin/exim -bd -q30m -d' to start the Exim daemon in debug mode. It includes a commented-out line that appears to test an SQL injection via Exim's string expansion: '/usr/exim/bin/exim -d -be '${lookup {test'' AND 1=2 \* } dbm {/var/spool/exim/db/misc} }''.

files/start-exim.sh:1-3

configure

Exim runtime configuration

A standard Exim runtime configuration file with ACLs, routers, transports, and authenticators. It defines local_domains, relay controls, and a PLAIN authenticator with hardcoded credentials (username/mysecret). No SQLite-specific configuration is visible.

files/configure:1-1032

docker.sh

builds and runs the Docker container with elevated privileges

A shell script that builds the Docker image, removes any existing container, and runs a new container with --cap-add SYS_PTRACE, --security-opt seccomp=unconfined, port 25 exposed, and an interactive bash shell.

files/docker.sh:1-4

connect_docker.sh

execs into the running container

A one-line script that runs 'sudo docker exec -it exim bash' to attach to the running container.

files/connect_docker.sh:1
CVE assessment

How the supplied evidence relates each vulnerability

CVE-2025-26794

Insufficient evidence

The packet provides no CVE description, advisory, or exploit code. The repository name and the SQL injection test in start-exim.sh suggest an association, but without a CVE record or documented vulnerability details, the association cannot be confirmed or denied.

files/start-exim.sh:1-3
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Docker must be installed and the user must have sudo privileges to run docker.sh.files/docker.sh:1-4
  • The Exim build requires network access to clone https://github.com/Exim/exim.git and install Debian packages.files/Dockerfile:1-36

Evidence-described exercise path

  1. Build the Docker image using 'sudo docker build -t exim .'files/docker.sh:1
  2. Run the container with elevated privileges and port 25 exposed.files/docker.sh:2-3
  3. Start the Exim daemon inside the container using start-exim.sh.files/start-exim.sh:1
  4. Optionally test the SQL injection by uncommenting and running the lookup expression in start-exim.sh.files/start-exim.sh:2
Safety-review evidence

Behaviors behind the stored safety assessment

No harmful behavior observed

All visible behavior is confined to building and running Exim inside a Docker container. The container is run with --cap-add SYS_PTRACE and seccomp=unconfined, which are common for debugging but increase attack surface; however, no evidence shows host escape, external connections, persistence, or destructive actions. The SQL injection test targets the lab's own Exim instance.

files/docker.sh:1-4files/start-exim.sh:1-3
Review boundaries

What the analysis did not establish

  • No CVE description or exploit code is provided; the vulnerability details are unknown.
  • The packet does not include the Makefile-Linux file referenced in the file inventory, so its contents are uninspected.
  • The start script contains a commented-out SQL injection test, but its exact purpose and outcome are not documented.
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.

GitHub

docker_lab

OscarBataille/CVE-2025-26794Created
Vuln labCVE-2025-26794Dockerfile

1 Dockerfile

Analysisdeepseek-v4-pro:cloud ·

Environment assessment

A Docker-based lab that builds Exim 4.98 from source with SQLite DBM support and a custom runtime configuration, intended to demonstrate CVE-2025-26794, a blind SQL injection in Exim's SQLite hints database.

docker_lab/Dockerfile:1-36README.md:1-127

Lab assessment

Vulnerability lab

The README explicitly states the repository is for CVE-2025-26794, describes the vulnerability, and provides a local Docker lab to reproduce it. The Dockerfile builds Exim with SQLite support and copies a configuration that enables the ETRN command, matching the vulnerability requirements.

README.md:1-3README.md:85-90docker_lab/Dockerfile:20-22
Lab shapeDockerfile
ServicesUnknown
Compose manifests0
Dockerfiles1
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

Exim 4.98 build

vulnerable target

Exim 4.98 is cloned from GitHub, compiled with SQLite DBM support (USE_SQLITE=yes) and debug flags, and installed. The build is configured to run as user exim-demo.

docker_lab/Dockerfile:7-26

Exim runtime configuration

enables ETRN commandenables SQLite DBM

A custom Exim configuration file is copied into the container. It defines an ACL for the ETRN command (acl_smtp_etrn) that accepts all ETRN requests, which is required for the SQL injection exploit.

docker_lab/Dockerfile:32docker_lab/configure:310-312

start-exim.sh

starts Exim daemon with debug output

A shell script that starts the Exim daemon in debug mode (-d) listening on port 25 and processing the queue every 30 minutes. It also contains a commented-out gdb command and a commented-out Exim expansion test.

docker_lab/start-exim.sh:1-3

test.py

remote vulnerability test script

A Python script that connects to an Exim server on port 25, sends a benign ETRN command, then sends a time-based blind SQL injection payload via ETRN, and measures the response time to determine if the target is vulnerable.

docker_lab/test.py:1-60

docker.sh

builds and runs the Docker lab

A shell script that builds the Docker image, removes any existing container, runs a new container with SYS_PTRACE capability, seccomp unconfined, port 25 published, and then opens an interactive bash shell inside the container.

docker_lab/docker.sh:1-4

connect_docker.sh

connects to the running container

A shell script that executes an interactive bash shell in the running 'exim' container.

docker_lab/connect_docker.sh:1
CVE assessment

How the supplied evidence relates each vulnerability

CVE-2025-26794

Supported by supplied evidence

The README describes a blind SQL injection in Exim 4.98 when SQLite is used as the DBM and the ETRN command is enabled. The Dockerfile builds Exim 4.98 with USE_SQLITE=yes, and the provided configure file enables the ETRN ACL. The start-exim.sh script starts Exim with debug output, and test.py demonstrates a time-based blind SQL injection payload via the ETRN command. All visible evidence aligns with the CVE description.

README.md:1-3docker_lab/Dockerfile:20-22docker_lab/configure:310-312docker_lab/test.py:30-45
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Exim must be compiled with SQLite DBM support (USE_SQLITE=yes).docker_lab/Dockerfile:20-22
  • The ETRN command must be enabled in the Exim configuration (acl_smtp_etrn must be defined).docker_lab/configure:310-312
  • The attacker must be able to connect to the Exim SMTP port (25) and issue ETRN commands.docker_lab/docker.sh:3

Evidence-described exercise path

  1. Build the Docker image and start the container using docker.sh.docker_lab/docker.sh:1-4
  2. Inside the container, start the Exim daemon with start-exim.sh.docker_lab/start-exim.sh:1
  3. Connect to the Exim server on port 25 using netcat or test.py.README.md:93-95
  4. Issue a crafted ETRN command containing a SQL injection payload to trigger the vulnerability.README.md:96-98
  5. Observe the Exim debug log for SQLite syntax errors or use test.py to measure time-based blind SQL injection response.README.md:98docker_lab/test.py:30-45
Safety-review evidence

Behaviors behind the stored safety assessment

No harmful behavior observed

All visible behavior is directed at the contained lab target (Exim 4.98 with SQLite). The Dockerfile builds and runs Exim locally, the test script connects to localhost:25, and the start script only launches the Exim daemon. There is no evidence of host escape, external connections, persistence, credential theft, or destructive actions beyond the intended vulnerability demonstration.

docker_lab/Dockerfile:1-36docker_lab/docker.sh:1-4docker_lab/test.py:1-60
Review boundaries

What the analysis did not establish

  • The packet does not include the Makefile-Linux file referenced in the Dockerfile (docker_lab/Makefile-Linux), so the exact build flags cannot be fully verified.
  • The Dockerfile uses 'cpan install File::FcntlLock' which may fail or require network access; the lab's build reproducibility is not guaranteed.
  • The start-exim.sh script contains a commented-out gdb command and a commented-out Exim expansion test; their purpose is not explained but they are not executed.
  • The test.py script sends a time-based payload that could cause high CPU load on the target, but this is expected for a blind SQL injection proof-of-concept.
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.

References

12