| Title | DrayTek Vigor2960 Vigor2960 1.5.1.6 (revision 8218) uthenticated apmupload Path Traversal File Clobber |
|---|
| Description | apmupload first stores the uploaded content in the APM file area and then performs a second move based on the user-controlled filename. Because this second move lacks a normalized-path prefix restriction on filename, it effectively exposes an authenticated path-traversal arbitrary file write/clobber primitive. The current PoC confirms this on the real device with filename=../../../var/status_system_interface.
Affected path(s):
POST /cgi-bin/mainfunction.cgi/apmupload with action=apm_map_upload
Root cause:
The user-controlled filename is reused as the target of a second mv operation without a normalized-path prefix restriction.
Confirmed impact:
Because this CGI runs as root, an authenticated attacker can use path traversal to write attacker-controlled uploaded content to effectively arbitrary target paths outside the intended APM file area; /var/status_system_interface has been verified on the real device.
## Vendor Confirmation
The vulnerability has been officially confirmed. The email is available at: https://github.com/yikesoftware/DrayTek_Vigor2960_Security_Analysis/tree/main/vendor_confirm
The official fix for this vulnerability has been released: https://fw.draytek.com.tw/Vigor2960/Firmware/v1.5.1.7/Vigor2960_v1.5.1.7.zip |
|---|
| Source | ⚠️ https://github.com/yikesoftware/DrayTek_Vigor2960_Security_Analysis/tree/main/cases/DRV2960-0009-authenticated-apmupload-path-traversal-clobber |
|---|
| User | eqqie (UID 101441) |
|---|
| Submission | 09/19/2026 16:50 (1 month ago) |
|---|
| Moderation | 10/20/2026 07:50 (1 month later) |
|---|
| Status | Accepted |
|---|
| VulDB entry | 422668 [DrayTek Vigor2960 1.5.1.6 Revision 8218 Apmupload mainfunction.cgi action path traversal] |
|---|
| Points | 20 |
|---|