| Title | AstrBotDevs AstrBot 4.25.2 Server-Side Request Forgery (CWE-918) |
|---|
| Description | # Technical Details
An authenticated Server-Side Request Forgery (SSRF) exists in the plugin update handlers (`update_plugin` and `update_all_plugins`) in `astrbot/dashboard/routes/plugin.py` of AstrBot.
The application fails to validate the `download_url`, `download_urls`, and `proxy` fields extracted from user-supplied JSON bodies before using them to make outbound requests.
# Vulnerable Code
File: astrbot/core/star/updator.py
Method: PluginUpdator.update
Why: The update method reads attacker-controlled URLs and directly passes them to the `httpx` HTTP client configured with `follow_redirects=True`. Neither the request domain, URL scheme, nor redirect targets are validated.
# Reproduction
1. Log in to the AstrBot dashboard using valid credentials.
2. Send a POST request to `/api/plugin/update` sending a target `name` and an attacker-controlled `download_url` (e.g., `"download_url": "http://127.0.0.1:19031/plugin.zip"`).
3. Confirm that the AstrBot server successfully completes an HTTP GET request to the specified internal or arbitrary host.
# Impact
- Allows an attacker to force the server into issuing outbound HTTP GET requests to arbitrary loopback or internal RFC1918 services.
- Permits internal network probing.
- Provides access to private mirrors, admin panels, and other services not reachable from the outside. |
|---|
| Source | ⚠️ https://gist.github.com/YLChen-007/f84070f78d9c9c9407b0c396189cd716 |
|---|
| User | Eric-d (UID 96861) |
|---|
| Submission | 06/09/2026 11:18 (2 months ago) |
|---|
| Moderation | 07/17/2026 15:39 (1 month later) |
|---|
| Status | Accepted |
|---|
| VulDB entry | 379789 [AstrBotDevs AstrBot up to 4.25.2 Plugin Update plugin.py update_plugin/update_all_plugins download_url/download_urls/proxy server-side request forgery] |
|---|
| Points | 20 |
|---|