CVE-2026-71289 Overview
CVE-2026-71289 is a missing authentication vulnerability in the NASA-AMMOS Asynchronous Network Management System (ANMS) reference implementation and the JHUAPL DTN Management Architecture tools (dtnma-tools). The default docker-compose.yml publishes the amp-manager REST API on host port 8089 with elevated capabilities (NET_ADMIN, NET_RAW, SYS_NICE), bypassing the Configuration and Access Manager (CAM) gateway that serves as the intended authentication boundary. The underlying CivetWeb server in src/refdm/nm_rest.c registers every route with a null authentication callback and disables domain checks. Any network-reachable client can enumerate DTN Management Architecture (DTNMA) agents, dispatch arbitrary command sets, and clear stored reports without credentials.
Critical Impact
Unauthenticated remote attackers can submit arbitrary EXECSET-encoded command sets to registered DTNMA agents, achieving full control over managed nodes in the DTN testbed.
Affected Products
- NASA-AMMOS anms reference implementation as published
- JHUAPL-DTNMA dtnma-tools (amp-manager / refdm component)
- Deployments using the default docker-compose.yml exposing port 8089
Discovery Timeline
- 2026-08-05 - CVE-2026-71289 published to NVD
- 2026-08-05 - Last updated in NVD database
Technical Details for CVE-2026-71289
Vulnerability Analysis
The vulnerability stems from two compounding misconfigurations. First, the default docker-compose.yml maps the amp-manager REST port (${ION_MGR_PORT:-8089}:8089/tcp) directly to the host network interface. This bypasses the CAM gateway, which is the system's sole authentication boundary. Second, the REST server implementation in src/refdm/nm_rest.c initializes CivetWeb with enable_auth_domain_check set to no and registers every route using a null authentication callback.
Exposed routes include the DTNMA agent command-dispatch endpoints at .../agents/{eid|idx}/send. These endpoints accept and forward EXECSET-encoded command sets to any registered DTNMA agent. Additional routes allow enumeration of registered agents and clearing of stored reports. The container also runs with NET_ADMIN, NET_RAW, and SYS_NICE Linux capabilities, expanding the impact of any exploitation.
Root Cause
The root cause is Missing Authentication for Critical Function [CWE-306]. The refdm REST server delegates authentication entirely to the upstream CAM gateway but does not enforce that assumption. When the docker-compose file exposes the port directly on the host, the authentication assumption is violated and no fallback control exists.
Attack Vector
A network-reachable attacker sends HTTP requests directly to port 8089 on the host running amp-manager. The attacker first enumerates registered DTNMA agents through the agents listing endpoint. The attacker then issues a POST request to .../agents/{eid}/send containing an EXECSET-encoded command set. The manager forwards the command set to the target DTNMA agent, which may represent a simulated or real spacecraft or ground node depending on deployment.
No verified public exploitation code is available. See the JHUAPL dtnma-tools repository and the NASA-AMMOS anms repository for source code and endpoint definitions.
Detection Methods for CVE-2026-71289
Indicators of Compromise
- Unexpected inbound TCP connections to port 8089 on hosts running amp-manager from sources outside the CAM gateway.
- HTTP requests to REST paths matching /nm/api/agents/*/send, /nm/api/agents/*/reports/clear, or similar refdm endpoints.
- DTNMA agent logs showing EXECSET command sets received from a manager without a corresponding operator-initiated action.
- Docker containers exposing port 8089 with cap_add entries for NET_ADMIN, NET_RAW, or SYS_NICE.
Detection Strategies
- Inventory all ANMS and dtnma-tools deployments and inspect docker-compose.yml for direct host port mappings on 8089.
- Perform authenticated network scans against management network segments to identify open port 8089 responders returning refdm REST responses.
- Enable and centralize CivetWeb access logs from nm_rest.c and alert on requests bearing no upstream CAM identifiers.
Monitoring Recommendations
- Correlate DTNMA agent command execution telemetry with authenticated CAM sessions to identify commands originating outside the gateway.
- Monitor egress from amp-manager containers for command dispatches to agents outside authorized operator windows.
- Alert on configuration drift where enable_auth_domain_check remains no or authentication callbacks are null in refdm builds.
How to Mitigate CVE-2026-71289
Immediate Actions Required
- Remove the direct host port mapping for amp-manager port 8089 from docker-compose.yml and route all REST traffic exclusively through the CAM gateway.
- Restrict network access to port 8089 using host firewall rules or Docker internal networks so only the CAM gateway container can reach it.
- Drop the NET_ADMIN, NET_RAW, and SYS_NICE capabilities unless a specific operational requirement documents their necessity.
- Audit DTNMA agent command histories for unexpected EXECSET submissions since the deployment date.
Patch Information
No vendor patch identifier is listed in the NVD entry as of publication. Consult the NASA-AMMOS anms repository and JHUAPL dtnma-tools repository for upstream fixes and remove the exposed port mapping in local deployments until fixes are published.
Workarounds
- Bind the amp-manager service to an internal Docker network only and expose it solely to the CAM gateway service.
- Front the REST API with a reverse proxy that enforces mutual TLS or bearer token authentication before requests reach refdm.
- Modify nm_rest.c to register a real authentication callback and set enable_auth_domain_check to yes when rebuilding from source.
- Place the entire ANMS deployment behind a bastion or VPN so port 8089 is not reachable from operator or general networks.
# Configuration example: remove host port exposure in docker-compose.yml
# Before (vulnerable):
# amp-manager:
# ports:
# - "${ION_MGR_PORT:-8089}:8089/tcp"
# cap_add:
# - NET_ADMIN
# - NET_RAW
# - SYS_NICE
#
# After (mitigated): expose only on the internal network to CAM
services:
amp-manager:
expose:
- "8089"
networks:
- anms-internal
# Drop elevated capabilities unless explicitly required
cap_drop:
- ALL
networks:
anms-internal:
internal: true
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

