CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-12566

CVE-2026-12566: Server-Side Request Forgery (SSRF) in Black Lantern Security BBOT docker_pull Module

Amit Schendel
Amit Schendel
Senior Security Researcher

Jun 18, 2026·6 min read·2 visits

Executive Summary (TL;DR)

Black Lantern Security BBOT's docker_pull module blindly parses and requests the realm URL from a Docker registry's WWW-Authenticate header, leading to Server-Side Request Forgery (SSRF) and potential credential exposure.

A Server-Side Request Forgery (SSRF) vulnerability exists in the docker_pull module of Black Lantern Security BBOT. By returning a maliciously crafted WWW-Authenticate header from a rogue Docker registry or executing a Man-in-the-Middle (MitM) attack, an attacker can coerce the BBOT scanner into making arbitrary HTTP requests to internal system services or external infrastructure, potentially disclosing sensitive authorization tokens and host metadata.

Vulnerability Overview

The Docker Registry HTTP API V2 protocol implements a decentralized, token-based authentication scheme. When an unauthenticated client queries a registry endpoint, the registry responds with an HTTP 401 Unauthorized status and a WWW-Authenticate header. This header contains details on how and where the client can obtain an authentication token, specifically referencing a target realm URL.

In Black Lantern Security's BBOT recursive internet scanner (versions 2.0.0 through 2.8.4), the docker_pull module handles these authentication requests. The module extracts the realm parameter directly from the HTTP response header and issues a subsequent HTTP GET request to retrieve the required token.

Because the application does not validate the authority or target domain of the parsed realm URL, this design creates an unauthenticated Server-Side Request Forgery (SSRF) vulnerability. An attacker can exploit this behavior by hosting a malicious Docker registry or performing a Man-in-the-Middle (MitM) interception of standard registry traffic.

Root Cause Analysis

The root cause of this vulnerability lies in the implicit trust placed in the WWW-Authenticate response header. Specifically, the docker_pull module failed to perform validation on the parsed realm parameter prior to using it to construct a outbound HTTP request.

During a standard connection sequence, BBOT initiates an anonymous API call to the registry. If the registry returns an HTTP 401 response, BBOT parses the www-authenticate header using crude, fragile string split operations. This parsing mechanism lacks any sanity checking or input validation.

After retrieving the value of the realm parameter, the application directly passes the constructed URL to its HTTP client helper. This behavior allows any remote endpoint that behaves as a Docker registry to control the destination of BBOT's subsequent outbound HTTP connection, exposing local interfaces, cloud metadata endpoints, and internal network infrastructure to unauthorized web requests.

Code Analysis

An analysis of the vulnerable code path in bbot/modules/docker_pull.py reveals how the unvalidated parameter is processed and executed:

async def docker_api_request(self, url: str):
    ...
    response = await self.helpers.request(url, headers=self.headers, follow_redirects=True)
    if response is not None and response.status_code != 401:
        return response
    try:
        www_authenticate_headers = response.headers.get("www-authenticate", "")
        # Crude, fragile string splits to extract parameters
        realm = www_authenticate_headers.split('realm="')[1].split('"')[0]
        service = www_authenticate_headers.split('service="')[1].split('"')[0]
        scope = www_authenticate_headers.split('scope="')[1].split('"')[0]
    except (KeyError, IndexError):
        self.log.warning(f"Could not obtain realm, service or scope from {url}")
        break
    auth_url = f"{realm}?service={service}&scope={scope}"
    # SSRF Bottleneck Step: Direct HTTP request to the untrusted realm URL
    auth_response = await self.helpers.request(auth_url)
    ...

The split mechanism reads the raw, unescaped string in www-authenticate. The value of realm is used to construct the absolute destination URL auth_url without verifying that the hostname in realm matches the hostname in the parent request url. Because self.helpers.request() carries session headers, any auth tokens or system identifiers configured in the module are transmitted directly to the attacker-specified domain.

Exploitation & Attack Methodology

An attacker can exploit this vulnerability through two main vectors: a malicious registry domain or a local network Man-in-the-Middle (MitM) attack.

In the malicious registry scenario, the attacker sets up an internet-accessible Docker registry (e.g., evil-registry.com). When BBOT scans this registry, the registry sends a crafted HTTP 401 response with a payload pointing to an internal target:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="http://169.254.169.254/latest/meta-data/",service="registry.docker.io",scope="repository:library/nginx:pull"

Upon parsing this header, BBOT issues an internal GET request targeting the AWS or cloud Link-Local Instance Metadata Service (IMDSv1). This allows the attacker to retrieve sensitive system configuration data or cloud environment security credentials.

If the attacker is positioned as a local network MitM, they can intercept standard HTTP outbound connections from BBOT and inject the same challenge response, redirecting the scanner's internal web client to any internal TCP port or web application interface on the local network segment.

Patch Evaluation & Residual Risks

Black Lantern Security addressed this vulnerability in commit c2f4bc0f4e4bb4d00f06750dcabf1d9c74c0d3b4. The patch introduces structured parsing of the authenticate header and validation logic to verify the target realm domain:

def _validate_realm(self, registry_url, realm):
    registry_host = self.helpers.urlparse(registry_url).hostname or ""
    realm_host = self.helpers.urlparse(realm).hostname or ""
    _, registry_domain = self.helpers.split_domain(registry_host)
    _, realm_domain = self.helpers.split_domain(realm_host)
    if not realm_domain or realm_domain != registry_domain:
        self.warning(f"Auth realm TLD ({realm_domain}) does not match registry TLD ({registry_domain}), skipping")
        return False
    return True

While the patch successfully prevents cross-domain open redirection and basic SSRF attacks, several advanced bypass vectors remain open. First, the patch does not perform IP-level validation prior to initiating the HTTP request. This allows private IP DNS mapping, where an attacker maps a wildcard subdomain of their registered registry (e.g., local.evil-registry.com) directly to 127.0.0.1 or 10.0.0.1. Since both the registry and the realm share the registrable domain evil-registry.com, validation passes, and the internal service is queried.

Second, the system is vulnerable to DNS Rebinding attacks. An attacker can set a low TTL on their registry DNS record, resolving to a benign public IP during validation, but changing to an internal system IP immediately before BBOT executes the HTTP request. Lastly, because the validator checks domains but does not restrict port numbers, an attacker can specify alternate ports (such as registry.domain:22 or registry.domain:8080) to conduct internal port scanning.

Detection & Remediation Guidance

To fully address this vulnerability, administrators and security engineers must upgrade BBOT to version 2.8.5 or higher. In environments where patching cannot be immediately completed, administrators should enforce network isolation for active scanner nodes.

Scanner instances must be deployed in an isolated Virtual Private Cloud (VPC) with firewall egress rules that strictly block traffic to RFC 1918 networks, the loopback interface, and link-local addresses (such as 169.254.169.254). For cloud instances running on AWS, enforce IMDSv2 and configure the hop limit to 1 to block unauthorized containerized requests to metadata endpoints.

Security teams can monitor SIEM or proxy logs for outbound connections from BBOT instances that target local endpoints immediately following HTTP 401 authentication exchanges. Network detection tools should flag any connections to non-standard ports (such as 22, 3306, or 8080) originating from the Docker pull automation module.

Official Patches

Black Lantern SecurityFix commit implementing validation checks for auth realm domains

Fix Analysis (1)

Technical Appendix

CVSS Score
3.1/ 10
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:N/A:N
EPSS Probability
0.17%
Top 94% most exploited

Affected Systems

Black Lantern Security BBOT (docker_pull module)

Affected Versions Detail

Product
Affected Versions
Fixed Version
BBOT
Black Lantern Security
>= 2.0.0, <= 2.8.42.8.5
AttributeDetail
CWE IDCWE-918
Attack VectorNetwork
CVSS v3.1 Score3.1 (Low)
EPSS Score0.00167
ImpactLow-severity information disclosure and Server-Side Request Forgery
Exploit Statusnone
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1005Data from Local System
Collection
CWE-918
Server-Side Request Forgery (SSRF)

The web server receives a URL or similar request from an upstream server or client and retrieves the contents of this URL without sufficiently validating that the target is safe or intended.

Vulnerability Timeline

Official security patch developed and committed to the BBOT repository by liquidsec.
2026-06-15
Vulnerability officially assigned and published as CVE-2026-12566.
2026-06-17
National Vulnerability Database (NVD) publishes baseline CVSS vectors and assessment.
2026-06-18

References & Sources

  • [1]BBOT Git Commit Patch
  • [2]CVE-2026-12566 Record on CVE.org
  • [3]NVD Vulnerability Detail Database Entry
  • [4]CWE-918: Server-Side Request Forgery

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•16 minutes ago•GHSA-WM69-2PC3-RMMF
8.6

GHSA-wm69-2pc3-rmmf: Unauthenticated Server-Side Request Forgery in Crawl4AI Docker Streaming Crawl Path

An unauthenticated Server-Side Request Forgery (SSRF) vulnerability was identified in the Crawl4AI Docker API server before version 0.9.0. The vulnerability exists because the streaming crawl endpoint (/crawl/stream) and the standard crawl endpoint with streaming enabled (/crawl with crawler_config.stream=true) bypass the validate_url_destination security filter. This allows remote, unauthenticated attackers to execute arbitrary HTTP requests targeting internal infrastructure, loopback interfaces, or cloud metadata endpoints like AWS/GCP services.

Amit Schendel
Amit Schendel
1 views•5 min read
•about 1 hour ago•CVE-2026-12565
5.3

CVE-2026-12565: Arbitrary File Write via Path Traversal in BBOT unarchive Module

CVE-2026-12565 is a medium-severity path traversal (Zip-Slip) vulnerability within the internal unarchive module of the BBOT (Black Lantern Security) OSINT framework. The vulnerability exists due to a failure to validate target paths before extracting archives using host-level command-line utilities. This allows remote, unauthenticated attackers to write arbitrary files outside of the target extraction folder on environments running legacy versions of GNU tar.

Alon Barad
Alon Barad
0 views•7 min read
•about 2 hours ago•CVE-2026-12568
6.5

CVE-2026-12568: Path Traversal and Arbitrary File Write in BBOT postman_download Module

CVE-2026-12568 is a path traversal vulnerability (CWE-22) in the postman_download module of BBOT (Babbage Border Obsession Tool) version 2.1.0 through 2.8.5. The vulnerability allows an attacker to perform arbitrary file writes on the local machine running the BBOT scan via a maliciously named remote Postman workspace.

Alon Barad
Alon Barad
3 views•7 min read
•about 2 hours ago•CVE-2026-12567
2.2

CVE-2026-12567: Symlink Following Vulnerability in BBOT github_workflows Module

The github_workflows module in BBOT (Black Lantern Security OSINT framework) versions 2.0.0 through 2.8.4 constructs local directory paths from user-controlled repository and owner names without validating for symbolic links. A local attacker sharing the scan directory can pre-plant a symlink at the predictable output path, forcing BBOT to write downloaded workflow artifacts or run logs to an arbitrary location on the filesystem.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 4 hours ago•GHSA-47QP-HQVX-6R3F
7.5

GHSA-47QP-HQVX-6R3F: Remote Memory Exhaustion (Denial of Service) in JLine3 Telnet Server

An unauthenticated remote memory exhaustion vulnerability in the JLine3 Telnet server allows attackers to crash the host Java Virtual Machine (JVM). The flaw exists in the processing of the NEW-ENVIRON option, where the server accepts an arbitrary number of environment variables without limits, storing them in an unconstrained HashMap. Sending as little as 3.25 MB of payload data can exhaust a standard JVM heap and trigger an OutOfMemoryError. This vulnerability affects applications integrating the remote-telnet module of JLine3.

Amit Schendel
Amit Schendel
6 views•7 min read
•about 7 hours ago•CVE-2026-49975
7.5

CVE-2026-49975: Remote Denial of Service via HTTP/2 HPACK Cookie Memory Amplification in Apache HTTP Server

CVE-2026-49975 describes a high-severity remote Denial of Service (DoS) vulnerability in the Apache HTTP Server's mod_http2 module. Unauthenticated attackers can exploit the HPACK compression and cookie-merging behavior to trigger severe, quadratic memory allocation. This resource exhaustion is maintained by manipulating the HTTP/2 flow-control window, ultimately forcing an Out-of-Memory condition on the server host.

Amit Schendel
Amit Schendel
12 views•7 min read