CVE-2025-11048
Executive Summary
CVE-2025-11048 is a publicly disclosed improper authorization vulnerability in Portabilis i-Educar, a popular open-source educational management system in Brazil. The flaw resides in the /consulta-dispensas endpoint, allowing an unauthenticated remote attacker to bypass authorization checks and access sensitive data or perform unauthorized actions. With a CVSS score of 6.3 (Medium), the vulnerability is trivial to exploit due to the lack of required privileges and the public availability of exploit details. No official patch has been released, leaving all versions up to and including 2.10 exposed.
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 affects the i-Educar PHP application, which is distributed as a self-hosted web application. There is no NPM, PyPI, Go, or Ruby package involved. The risk is primarily to organizations that have deployed i-Educar on their own infrastructure.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – Exploitable remotely over the network.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – No authentication needed.
- User Interaction (UI): None (N) – No user action required.
- Scope (S): Unchanged (U) – The vulnerable component is the only affected component.
- Confidentiality (C): Low (L) – Limited information disclosure.
- Integrity (I): Low (L) – Limited ability to modify data.
- Availability (A): Low (L) – Limited impact on service availability.
Threat Level: Medium. The exploit is public and trivial to execute, but the impact is limited to low-level confidentiality, integrity, and availability loss.
Deep Dive & Mechanics
The vulnerability is an improper authorization (CWE-285) in the /consulta-dispensas endpoint of i-Educar. The application fails to enforce proper access controls, allowing any unauthenticated user to query the endpoint. The endpoint likely returns sensitive data related to student dispensations (e.g., medical or academic exemptions) without verifying the user's identity or role.
The root cause is the absence of a middleware or access control check on the route handler for /consulta-dispensas. In a typical PHP framework (likely Laravel or similar), this would be a missing auth middleware or a missing permission check in the controller method.
Vulnerable vs. Patched Code
Since no official patch is available, the following is a hypothetical comparison based on common fixes.
Vulnerable Code (i-Educar <= 2.10):
// routes/web.php
Route::get('/consulta-dispensas', 'DispensaController@consulta');
// app/Http/Controllers/DispensaController.php
public function consulta(Request $request) {
// No authentication or authorization check
$dispensas = Dispensa::all();
return response()->json($dispensas);
}
Patched Code (Hypothetical Fix):
// routes/web.php
Route::get('/consulta-dispensas', 'DispensaController@consulta')->middleware('auth');
// app/Http/Controllers/DispensaController.php
public function consulta(Request $request) {
// Ensure user is authenticated and authorized
if (!Auth::check() || !Auth::user()->can('view_dispensas')) {
abort(403, 'Unauthorized');
}
$dispensas = Dispensa::where('user_id', Auth::id())->get();
return response()->json($dispensas);
}
Exploitation & Lab Setup
Red Team
Exploit Description: The exploit is a simple HTTP GET request to the vulnerable endpoint. No authentication or special headers are required.
Exploit Code:
curl -X GET "http://target-educar.com/consulta-dispensas" -H "Accept: application/json"
Expected Output: A JSON array of dispensation records, potentially including sensitive student data (e.g., names, medical conditions, dates).
Lab Setup:
- Deploy i-Educar 2.10 using Docker or a manual LAMP stack.
- Ensure the application is accessible on a local network.
- Run the exploit command against the target.
Blue Team
Detection: Monitor for unusual access to /consulta-dispensas from unauthenticated sources. Look for spikes in 200 OK responses to this endpoint from IPs not associated with authenticated users.
Hunting Query (Splunk):
index=web sourcetype=access_combined
| search uri="/consulta-dispensas" status=200
| stats count by src_ip, user_agent
| where count > 10
Mitigation: Immediately restrict access to the endpoint via web server configuration (e.g., .htaccess or Nginx location block) until a patch is applied.
Indicators of Compromise (IOCs)
- Network:
- HTTP GET requests to
/consulta-dispensasfrom external IPs. - Response bodies containing JSON arrays with fields like
nome_aluno,tipo_dispensa,data_inicio.
- HTTP GET requests to
- File System:
- Unauthorized access logs in
/var/log/apache2/access.logor/var/log/nginx/access.logshowing the endpoint.
- Unauthorized access logs in
- Behavioral:
- Multiple rapid requests to
/consulta-dispensasfrom a single IP.
- Multiple rapid requests to
Detection Engineering
YARA Rule
rule CVE_2025_11048_iEducar_Exploit {
meta:
description = "Detects HTTP requests targeting the vulnerable /consulta-dispensas endpoint in i-Educar"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-11048"
strings:
$endpoint = "/consulta-dispensas"
$json_response = /\[.*\"nome_aluno\".*\]/
condition:
$endpoint and $json_response
}
Sigma Rule
title: CVE-2025-11048 - i-Educar Unauthorized Access to /consulta-dispensas
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects unauthenticated access to the vulnerable /consulta-dispensas endpoint
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-stem: "/consulta-dispensas"
sc-status: 200
condition: selection
falsepositives:
- Legitimate authenticated users (rare)
level: high
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2025-11048 - i-Educar Unauthorized Access to /consulta-dispensas";
flow:to_server,established;
content:"/consulta-dispensas"; http_uri;
classtype:attempted-recon;
sid:1000001;
rev:1;
)
Remediation & Mitigation
- Immediate: Block access to
/consulta-dispensasat the web server level (e.g., Apache.htaccessor Nginxlocationblock withdeny all). - Short-term: Implement authentication and authorization checks in the controller method. Ensure only authenticated users with the proper role can access the endpoint.
- Long-term: Apply the official patch once released by Portabilis. Monitor the vendor's GitHub repository for updates.
- Compensating Controls: Use a Web Application Firewall (WAF) to block requests to the vulnerable endpoint from untrusted sources.
Valters IT
DevSecOps & Cyber Threat Intelligence