Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-15668

CVE-2026-15668: louisho5 picobot SSRF Vulnerability

CVE-2026-15668 is a server-side request forgery flaw in louisho5 picobot up to version 0.2.0 that allows remote attackers to manipulate server requests. This article covers technical details, affected versions, and mitigation.

Published:

CVE-2026-15668 Overview

CVE-2026-15668 is a Server-Side Request Forgery (SSRF) vulnerability in louisho5 picobot versions up to 0.2.0. The flaw resides in the WebTool.Execute function within internal/agent/tools/web.go, which handles the web Tool component. Attackers can manipulate the url argument to force the server to issue arbitrary outbound requests. The vulnerability is remotely exploitable and requires low privileges to trigger. Public disclosure has occurred, and the project maintainers have not responded to the upstream issue report at the time of publication.

Critical Impact

Remote attackers with low-level access can coerce picobot into making arbitrary server-side HTTP requests, enabling internal network reconnaissance and access to services intended to be unreachable from the public internet.

Affected Products

  • louisho5 picobot versions up to and including 0.2.0
  • The vulnerable web Tool component (internal/agent/tools/web.go)
  • Deployments exposing the WebTool.Execute function to untrusted input

Discovery Timeline

  • 2026-07-14 - CVE-2026-15668 published to the National Vulnerability Database (NVD)
  • 2026-07-15 - Last updated in NVD database

Technical Details for CVE-2026-15668

Vulnerability Analysis

The vulnerability is classified as Server-Side Request Forgery under [CWE-918]. It affects the WebTool.Execute function in internal/agent/tools/web.go, part of picobot's agent tooling for retrieving web content. The function accepts a user-controlled url argument and dispatches an HTTP request without sufficient validation of the destination. An authenticated attacker with low privileges can supply URLs pointing to internal hosts, cloud metadata endpoints, or loopback services. The server then acts as a confused deputy, returning or acting on responses from resources the attacker cannot reach directly.

Root Cause

The root cause is missing or inadequate validation of the destination URL supplied to WebTool.Execute. The web Tool does not enforce an allowlist of permitted hosts, block access to private IPv4 ranges (RFC 1918), IPv6 unique local addresses, loopback addresses, or link-local metadata services such as 169.254.169.254. The absence of URL scheme, hostname, and resolved-IP validation permits arbitrary outbound requests originating from the picobot process.

Attack Vector

Exploitation occurs over the network and requires low-privileged access to interact with the agent tool interface. An attacker submits a crafted url parameter through whatever prompt or API surface routes into WebTool.Execute. The server issues an outbound request to the attacker-specified endpoint. Typical abuse scenarios include probing internal HTTP services, reading cloud instance metadata to harvest temporary credentials, and interacting with unauthenticated administrative interfaces bound to localhost.

The vulnerability is described in prose only because no verified proof-of-concept code is published in the reference material. Refer to the GitHub Issue #41 and the VulDB CVE-2026-15668 entry for further technical context.

Detection Methods for CVE-2026-15668

Indicators of Compromise

  • Outbound HTTP requests from the picobot process to RFC 1918 private address ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) or loopback (127.0.0.0/8)
  • Requests targeting cloud metadata endpoints such as 169.254.169.254, metadata.google.internal, or metadata.azure.com
  • Unusual url argument values in application logs for the WebTool.Execute handler, including non-HTTP schemes such as file://, gopher://, or dict://

Detection Strategies

  • Instrument the picobot agent to log every URL passed to WebTool.Execute, including the resolved destination IP address after DNS resolution
  • Deploy egress firewall rules that alert on outbound traffic from picobot hosts destined for internal subnets or metadata services
  • Correlate agent tool invocations with subsequent outbound network flows to identify SSRF pivoting attempts

Monitoring Recommendations

  • Enable verbose HTTP client logging in the Go runtime hosting picobot to capture request URLs and response codes
  • Monitor cloud provider audit logs for unexpected use of instance credentials issued to the picobot host
  • Alert on anomalous spikes in outbound request volume or diversity from the picobot service account

How to Mitigate CVE-2026-15668

Immediate Actions Required

  • Restrict access to the picobot agent interface to trusted users and networks until a patched release is available
  • Deploy egress network controls that block picobot from reaching internal subnets, loopback interfaces, and cloud metadata endpoints
  • Rotate any cloud instance credentials that may have been exposed through the picobot host's metadata service

Patch Information

No vendor patch is available at the time of publication. The upstream project was notified through GitHub Issue #41 but has not responded. Monitor the picobot GitHub repository for future releases beyond version 0.2.0 that address the SSRF in internal/agent/tools/web.go.

Workarounds

  • Fork the project and add URL validation to WebTool.Execute that rejects private, loopback, link-local, and multicast addresses after DNS resolution
  • Enforce an allowlist of permitted destination hostnames or domains at the application layer
  • Run picobot inside a network namespace or container with egress restricted to explicitly permitted external hosts
bash
# Example iptables egress restrictions for a picobot host
iptables -A OUTPUT -m owner --uid-owner picobot -d 127.0.0.0/8 -j REJECT
iptables -A OUTPUT -m owner --uid-owner picobot -d 10.0.0.0/8 -j REJECT
iptables -A OUTPUT -m owner --uid-owner picobot -d 172.16.0.0/12 -j REJECT
iptables -A OUTPUT -m owner --uid-owner picobot -d 192.168.0.0/16 -j REJECT
iptables -A OUTPUT -m owner --uid-owner picobot -d 169.254.169.254/32 -j REJECT

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.