CVE-2025-61532

6.1 MEDIUM

📋 TL;DR

This CVE describes a Cross-Site Scripting (XSS) vulnerability in SVX Portal versions 2.7A through 2.7A that allows attackers to inject malicious scripts via the TG parameter in the last_heard_page.php component. This affects organizations using SVX Portal for amateur radio communications management. Attackers could execute arbitrary JavaScript in users' browsers when they visit the vulnerable page.

💻 Affected Systems

Products:
  • SVX Portal
Versions: 2.7A to 2.7A
Operating Systems: Any OS running SVX Portal
Default Config Vulnerable: ⚠️ Yes
Notes: The vulnerability exists in the default installation when the last_heard_page.php component is accessible.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could steal session cookies, redirect users to malicious sites, perform actions on behalf of authenticated users, or deliver malware payloads through the vulnerable portal interface.

🟠

Likely Case

Session hijacking, credential theft, or defacement of the portal interface through injected content.

🟢

If Mitigated

Limited impact with proper input validation and output encoding, potentially only affecting the specific vulnerable parameter with minimal data exposure.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Exploitation requires crafting malicious TG parameter values and likely requires user interaction or social engineering to trigger.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: SVX Portal version 1.3.0 or later

Vendor Advisory: https://docs.meeco.me/releases/svx-1.3.0#portal

Restart Required: No

Instructions:

1. Backup current SVX Portal installation. 2. Download and install SVX Portal version 1.3.0 or later from the official repository. 3. Verify the installation completes successfully. 4. Test the last_heard_page.php functionality.

🔧 Temporary Workarounds

Input Validation Filter

all

Implement server-side validation to sanitize the TG parameter before processing

Modify last_heard_page.php to include: $tg_param = htmlspecialchars($_GET['TG'], ENT_QUOTES, 'UTF-8');

Content Security Policy

all

Implement CSP headers to restrict script execution sources

Add to Apache .htaccess: Header set Content-Security-Policy "default-src 'self'; script-src 'self'"
Add to Nginx config: add_header Content-Security-Policy "default-src 'self'; script-src 'self'";

🧯 If You Can't Patch

  • Disable or restrict access to last_heard_page.php component
  • Implement web application firewall rules to block malicious TG parameter patterns

🔍 How to Verify

Check if Vulnerable:

Test by accessing last_heard_page.php with a test payload like: last_heard_page.php?TG=<script>alert('test')</script> and check if script executes

Check Version:

Check SVX Portal version in admin interface or review installation files for version markers

Verify Fix Applied:

After patching, repeat the test payload and confirm no script execution occurs

📡 Detection & Monitoring

Log Indicators:

  • Unusual TG parameter values containing script tags or JavaScript in access logs
  • Multiple failed attempts to access last_heard_page.php with malformed parameters

Network Indicators:

  • HTTP requests to last_heard_page.php containing script tags in TG parameter
  • Unusual outbound connections from portal server after XSS payload execution

SIEM Query:

source="web_access_logs" AND uri="*last_heard_page.php*" AND (query="*<script>*" OR query="*javascript:*")

🔗 References

📤 Share & Export