CVE-2025-41338

7.5 HIGH

📋 TL;DR

An authorization bypass vulnerability in CanalDenuncia.app allows attackers to access other users' information by manipulating POST parameters. Attackers can retrieve sensitive witness information by sending crafted requests to the vulnerable API endpoint. All users of the affected application are potentially impacted.

💻 Affected Systems

Products:
  • CanalDenuncia.app
Versions: All versions prior to patch
Operating Systems: All platforms running the application
Default Config Vulnerable: ⚠️ Yes
Notes: Vulnerability exists in the backend API endpoint regardless of frontend configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Mass data breach exposing all user reports and witness information, potentially including personally identifiable information and sensitive case details.

🟠

Likely Case

Targeted data extraction of specific users' witness information and case details, leading to privacy violations and potential harassment.

🟢

If Mitigated

Limited or no data exposure due to proper authorization checks and input validation.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires sending POST requests with manipulated parameters, which is straightforward for attackers with basic web testing knowledge.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Unknown specific version - check vendor advisory

Vendor Advisory: https://www.incibe.es/en/incibe-cert/notices/aviso/multiple-vulnerabilities-canaldenunciaapp

Restart Required: Yes

Instructions:

1. Contact CanalDenuncia.app vendor for patched version
2. Apply the security update to all instances
3. Restart application services
4. Verify authorization checks are properly implemented

🔧 Temporary Workarounds

API Endpoint Restriction

all

Temporarily block or restrict access to the vulnerable endpoint

# Web server configuration example
# Add to .htaccess for Apache:
RewriteRule ^backend/api/buscarTestigoByIdDenunciaUsuario\.php$ - [F]
# Nginx:
location ~ ^/backend/api/buscarTestigoByIdDenunciaUsuario\.php$ { return 403; }

Input Validation Filter

all

Implement server-side validation of id_denuncia and id_user parameters

# PHP example for parameter validation
$id_denuncia = filter_input(INPUT_POST, 'id_denuncia', FILTER_VALIDATE_INT);
$id_user = filter_input(INPUT_POST, 'id_user', FILTER_VALIDATE_INT);
if (!$id_denuncia || !$id_user) { http_response_code(400); exit; }

🧯 If You Can't Patch

  • Implement strict authorization checks in the application layer to verify users can only access their own data
  • Deploy a web application firewall (WAF) with rules to detect and block parameter manipulation attempts

🔍 How to Verify

Check if Vulnerable:

Send a POST request to /backend/api/buscarTestigoByIdDenunciaUsuario.php with manipulated id_denuncia and id_user parameters. If you can access data belonging to other users, the system is vulnerable.

Check Version:

Check application version through admin interface or contact vendor for version information

Verify Fix Applied:

Attempt the same POST request with manipulated parameters. The system should return an authorization error or empty response when trying to access other users' data.

📡 Detection & Monitoring

Log Indicators:

  • Multiple POST requests to /backend/api/buscarTestigoByIdDenunciaUsuario.php with different id_user values from same source
  • Unusual parameter values in POST requests
  • Failed authorization attempts for witness data access

Network Indicators:

  • POST requests to vulnerable endpoint with manipulated parameters
  • Unusual data retrieval patterns from the API

SIEM Query:

source="web_server" AND (url="/backend/api/buscarTestigoByIdDenunciaUsuario.php" AND method="POST") | stats count by src_ip, form_data

🔗 References

📤 Share & Export