← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
CVE-2026-8037 · CWE-77 · Disclosed 2026-06-04

OS Command Injection Remote Code Execution Vulnerability in API in Progress ADC Products

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
01 · The Real Story

This is a loaded nail gun locked in the maintenance closet, not a grenade on the sidewalk

The user-provided record for CVE-2026-8037 does not line up with primary-source advisories. The official match is CVE-2026-3517, published on 2026-04-20, covering an OS command injection flaw in the Progress ADC API where an authenticated user with Geo Administration permissions can inject commands through the addcountry path on LoadMaster. Officially affected ranges are LoadMaster 7.1.32.0 before 7.2.63.0 in the CNA record, with NVD-enriched fixed branches showing LoadMaster GA < 7.2.63.1 and LoadMaster LTSF < 7.2.54.17; ECS Connection Manager, Object Scale Connection Manager, and MOVEit WAF are also affected in their respective pre-7.2.63.1 ranges.

Reality is much less dramatic than the user-supplied CRITICAL 9.6 / PR:N framing. Primary sources describe this as authenticated, high-privilege, admin-plane abuse, and Progress documents that the REST API is disabled by default. That combination turns this from 'internet-scale initial access' into 'post-compromise or admin-credential abuse on a management surface', which is why this gets downgraded hard despite the eventual RCE impact.

"Dangerous after admin-plane compromise, but not a one-packet internet fire"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Reach the management plane

The attacker first needs network reachability to the LoadMaster administrative interface or API path. Progress documents the API as a management feature, not a data-plane service, and it is disabled by default. In practice this usually means the attacker is already on a management VLAN, VPN, jump host, or other trusted path.
Conditions required:
  • Administrative web interface or API is reachable from the attacker position
  • API has been enabled, or the relevant admin surface is otherwise exposed
  • Attacker has adjacent/internal network access to the management plane
Where this breaks in practice:
  • API is disabled by default
  • Mature shops pin admin access to a management interface or restricted subnet
  • Many ADC deployments do not expose the admin plane to the public internet
Detection/coverage: External scanners will often miss this entirely because exposure depends on management-path reachability and whether the API was enabled.
STEP 02

Obtain privileged credentials or API key

The flaw is not pre-auth. The attacker must authenticate as a user with Geo Administration permissions, or use an API key tied to an account with that scope. That means stolen admin credentials, reused secrets, compromised jump hosts, or insider access are the realistic entry points.
Conditions required:
  • Valid credentials or API key
  • Account has Geo Administration permissions
Where this breaks in practice:
  • This is a PR:H prerequisite in the official record
  • Role scoping can limit who can invoke the vulnerable function
  • MFA and PAM can reduce successful credential abuse, though they do not eliminate stolen API key risk
Detection/coverage: Identity telemetry, PAM logs, VPN logs, and admin-login alerts should see the prerequisite abuse if they are wired correctly.
STEP 03

Abuse addcountry command handling

Once authenticated, the attacker sends a crafted request to the vulnerable API path tied to the addcountry functionality. ZDI attributes the bug to insufficient validation of a user-controlled parameter before a system call, while Progress/NVD describe it as unsanitized input in the addcountry command. That turns an admin API operation into shell-level execution.
Conditions required:
  • Target is running a vulnerable build
  • Caller can reach the specific API function
Where this breaks in practice:
  • Version-specific
  • Requires the vulnerable feature path rather than generic appliance access
  • Exploit reliability may depend on exact firmware branch and parameter handling
Detection/coverage: Authenticated vulnerability scanners can version-check firmware, but content-based exploit detection is thin unless you log admin/API actions or inspect requests on the management interface.
STEP 04

Execute commands on the appliance

Successful exploitation yields arbitrary command execution in the appliance context. On an ADC, that can expose certificates, traffic steering logic, WAF settings, or provide a foothold for pivoting deeper into application delivery infrastructure. The impact is serious per-host, but the blast radius is constrained by how few people should ever satisfy steps 1 and 2.
Conditions required:
  • Exploit succeeds against the specific appliance
  • Attacker can maintain authenticated management access long enough to act on results
Where this breaks in practice:
  • Appliance shell access is a niche post-auth objective, not a commodity first-stage exploit
  • Segmentation and outbound controls can blunt follow-on pivoting
Detection/coverage: Look for unusual admin/API actions, config changes, suspicious process execution on the appliance, and post-exploitation outbound connections from the management plane.
03 · Intelligence Metadata

The supporting signals.

Record mismatchPrimary sources do not validate the user-supplied CVE-2026-8037 / PR:N / 9.6 package. The official matching record is CVE-2026-3517, published 2026-04-20.
In-the-wild statusNo confirmed active exploitation found in primary sources reviewed. CISA KEV does not list this CVE.
KEV statusNot listed in the CISA Known Exploited Vulnerabilities Catalog.
Proof-of-concept availabilityI found a researcher advisory from ZDI-26-319 describing the vulnerable parameter and exploit class, but no authoritative public weaponized PoC from the vendor or CISA.
EPSSOfficial FIRST EPSS data was not directly retrievable in this session. Use your internal EPSS feed if available; do not let missing EPSS override the strong real-world friction here.
CVSS vector reality checkOfficial CNA vector is CVSS:3.1/AV:A/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H: adjacent/internal reachability plus high privileges required. That is materially different from the user-supplied PR:N critical framing.
Affected versionsCNA says LoadMaster 7.1.32.0 before 7.2.63.0; ECS Connection Manager 7.2.49.0 before 7.2.63.0; Object Scale Connection Manager and MOVEit WAF 7.2.62.0 before 7.2.63.0. NVD enrichment maps LoadMaster vulnerable branches as GA < 7.2.63.1 and LTSF < 7.2.54.17.
Fixed versionsProgress release history and security notes show fixes in LoadMaster GA 7.2.63.1 and LoadMaster LTSF 7.2.54.17, both released 2026-04-20.
Exposure realityProgress documents the REST API is disabled by default and management access can be pinned to restricted interfaces. I found no authoritative Shodan/Censys host count for this CVE, so treat exposure as deployment-specific admin-plane risk, not assumed internet-scale reach.
Researcher / reportingFinder credit goes to Michael Argany of TrendAI Research; ZDI says the issue was reported to the vendor on 2026-02-23 and publicly disclosed on 2026-05-21.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.8/10)

The decisive factor is attacker position and privilege: this is an authenticated, high-privilege admin-plane bug on a management surface that is disabled by default. That makes it a dangerous post-compromise accelerator, not a realistic one-shot initial-access event across a broad enterprise estate.

HIGH The user-provided CVE/intel bundle mismatches the official primary-source record; the correct match is CVE-2026-3517
HIGH Privilege and exposure friction materially reduce real-world severity
MEDIUM Exact exposure prevalence in your environment depends on how often admin WUI/API are reachable and enabled

Why this verdict

  • Start from the official baseline, not the social-media one: the primary-source match is vendor/NVD HIGH 8.4/7.2, not the user-supplied CRITICAL 9.6 PR:N.
  • PR:H is real downward pressure: exploitation requires a valid authenticated account with Geo Administration permissions, which implies the attacker is already past initial access or abusing privileged credentials/API keys.
  • Admin-plane reachability is another hard gate: this is not the normal application data plane; it targets the management surface of an ADC appliance.
  • API disabled by default matters: Progress explicitly says the REST API is disabled by default, so a meaningful slice of deployments never expose the vulnerable path at all.
  • No KEV / no confirmed exploitation: absent active exploitation evidence, there is no reason to keep an authenticated management-plane bug in the top bucket solely because the post-exploitation impact is high.

Why not higher?

If this were unauthenticated, broadly internet-reachable, or confirmed under active exploitation, it would jump buckets fast because command execution on an ADC is strategically ugly. But the real chain requires adjacent/internal access, an enabled management/API surface, and a privileged authenticated role, which compounds downward friction at every step.

Why not lower?

Once those prerequisites are met, the impact is still arbitrary command execution on a central application delivery appliance. That is too much blast radius per successful compromise to dismiss as LOW, especially in environments where ADCs terminate TLS, hold certificates, and sit on privileged network paths.

05 · Compensating Control

What to do — in priority order.

  1. Restrict management-plane reachability — Move Admin WUI/API access onto a dedicated management interface or tightly limited management network, and remove any unnecessary internet or broad internal exposure. For a MEDIUM verdict there is no mitigation SLA — go straight to the 365-day remediation window, but this is worth doing now because it collapses step 1 of the attack chain.
  2. Disable the REST API if unused — Progress states the API is disabled by default; keep it that way unless you have an explicit automation dependency. For this MEDIUM case there is no mitigation SLA — go straight to the 365-day remediation window, but eliminating the vulnerable surface is cleaner than hoping role controls hold forever.
  3. Tighten privileged roles and rotate API keys — Review who actually has Geo Administration or equivalent high-impact rights, remove stale access, and rotate API keys tied to admin automation. There is no mitigation SLA — go straight to the 365-day remediation window, but reducing credential sprawl directly attacks the most important prerequisite in this exploit chain.
  4. Alert on admin/API activity — Log and monitor admin logins, API calls, config changes, and unusual management-plane source IPs. There is no mitigation SLA — go straight to the 365-day remediation window, yet visibility is still the best way to catch the preconditions this bug depends on.
What doesn't work
  • A front-end WAF does not solve this, because the vulnerable surface is the appliance's own management/API path, not ordinary protected application traffic.
  • MFA alone is not enough if the attacker already has a valid session, a stolen API key, or access from a compromised management host.
  • Perimeter web scanning only will miss many cases, because the API may be disabled, the surface may live on a restricted interface, and exploitation is post-auth.
06 · Verification

Crowdsourced verification payload.

Run this on the Progress appliance itself over SSH or console as an admin-capable shell user. Invoke it with bash check_cve_2026_3517.sh; no internet access is needed, but you may need elevated rights to read version files and appliance metadata. This script is geared to LoadMaster builds and returns VULNERABLE, PATCHED, or UNKNOWN based on detected LMOS version.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_3517.sh
# Purpose: Best-effort local version check for the Progress LoadMaster fix for CVE-2026-3517.
# Output: VULNERABLE / PATCHED / UNKNOWN
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

set -u

ver=""
source_hint=""

trim() {
  echo "$1" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//'
}

extract_ver() {
  echo "$1" | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?' | head -n1
}

# Try common files first
for f in \
  /etc/version \
  /etc/loadmaster-version \
  /etc/loadmaster_version \
  /etc/loadmaster-release \
  /etc/lmos-release \
  /etc/issue
 do
  if [ -r "$f" ]; then
    cand=$(extract_ver "$(cat "$f" 2>/dev/null)")
    if [ -n "$cand" ]; then
      ver="$cand"
      source_hint="$f"
      break
    fi
  fi
done

# Try likely commands if file-based lookup failed
if [ -z "$ver" ]; then
  for cmd in \
    "bal version" \
    "bal -v" \
    "lmversion" \
    "lmver" \
    "hostnamectl"; do
    cand=$(sh -c "$cmd" 2>/dev/null | head -n 20)
    cand_ver=$(extract_ver "$cand")
    if [ -n "$cand_ver" ]; then
      ver="$cand_ver"
      source_hint="$cmd"
      break
    fi
  done
fi

if [ -z "$ver" ]; then
  echo "UNKNOWN - could not determine LMOS version from common files or commands"
  exit 2
fi

# Version compare helpers using sort -V
ver_lt() {
  [ "$(printf '%s\n%s\n' "$1" "$2" | sort -V | head -n1)" != "$2" ]
}

ver_ge() {
  [ "$(printf '%s\n%s\n' "$1" "$2" | sort -V | head -n1)" = "$2" ]
}

# Branch logic for LoadMaster based on Progress/NVD fixed builds:
#   GA fixed in 7.2.63.1
#   LTSF fixed in 7.2.54.17
# NVD also shows older GA ranges vulnerable below 7.2.63.1.

case "$ver" in
  7.2.54.*)
    if ver_ge "$ver" "7.2.54.17"; then
      echo "PATCHED - detected LoadMaster LTSF $ver from $source_hint"
      exit 0
    else
      echo "VULNERABLE - detected LoadMaster LTSF $ver from $source_hint (fixed in 7.2.54.17+)"
      exit 1
    fi
    ;;
  7.2.63.*)
    if ver_ge "$ver" "7.2.63.1"; then
      echo "PATCHED - detected LoadMaster GA $ver from $source_hint"
      exit 0
    else
      echo "VULNERABLE - detected LoadMaster GA $ver from $source_hint (fixed in 7.2.63.1+)"
      exit 1
    fi
    ;;
  7.2.*|7.1.*)
    if ver_lt "$ver" "7.2.63.1"; then
      echo "VULNERABLE - detected pre-fix LoadMaster-family version $ver from $source_hint"
      exit 1
    else
      echo "PATCHED - detected LoadMaster-family version $ver from $source_hint"
      exit 0
    fi
    ;;
  *)
    echo "UNKNOWN - detected version $ver from $source_hint, but branch is not recognized as a supported LoadMaster fix branch"
    exit 2
    ;;
esac
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning, treat this as a management-plane hardening and scheduled patching issue, not an emergency internet-wide fire drill. First, inventory Progress ADC assets that map to the official record, confirm whether Admin WUI/API are enabled and reachable, and close obvious management exposure where you find it. Because this landed at MEDIUM, there is no noisgate mitigation SLA — go straight to the 365-day remediation window; your action plan is to patch affected LoadMaster systems to 7.2.63.1 GA or 7.2.54.17 LTSF and equivalent fixed branches for the related ADC products within the noisgate remediation SLA of 365 days, while cleaning up privileged roles and unused API access in parallel.

Sources

  1. NVD CVE-2026-3517
  2. CVE Record CVE-2026-3517
  3. Progress LoadMaster 7.2.63.1 Security Updates
  4. Progress RESTful API Interface
  5. Progress LoadMaster APIv2 Documentation
  6. Progress Administrator Access
  7. Progress Release History
  8. CISA KEV Catalog
  9. ZDI-26-319
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.