Fledge IoT Gateway Backup Restore OS Command Injection via Tar Member Filename
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||
|---|---|---|---|---|---|---|---|---|---|
| fledge-iot | fledge | unaffected |
|
No data.
No data.
| Vendor | Product | Versions | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Fledge-iot | Fledge |
|
No CVSS v4.0
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.918% probability within 30 days)
| Type | Values Removed | Values Added |
|---|---|---|
| Description | Fledge's backup-restore upload handler, upload_backup() (python/fledge/services/core/api/backup_restore.py), takes the first extracted tar member's filename (tar_file_names[0]) and builds a shell command via string formatting: `cmd = "cp {} {}".format(source, backup_path); ret_code = os.system(cmd)`. The only pre-check on the filename is a prefix/suffix match (startswith(backup_prefix), endswith(valid_extensions)), which a name such as `fledge_backup_$(id>/tmp/pwn).db` satisfies while still injecting a shell command substitution. Because os.system() invokes a shell and no quoting (shlex.quote, list-form subprocess) is applied, an admin uploading a crafted backup archive achieves arbitrary OS command execution. | Fledge's backup-restore upload handler, upload_backup (python/fledge/services/core/api/backup_restore.py), takes the first extracted tar member's filename (tar_file_names[0]) and builds a shell command via string formatting. Because os.system invokes a shell and no quoting (shlex.quote, list-form subprocess) is applied, an admin uploading a crafted backup archive achieves arbitrary OS command execution. |
| Title | Fledge IoT Gateway - Backup Restore OS Command Injection via Tar Member Filename | Fledge IoT Gateway Backup Restore OS Command Injection via Tar Member Filename |
| Type | Values Removed | Values Added |
|---|---|---|
| Title | Fledge IoT Gateway Backup Restore OS Command Injection via Tar Member Filename | Fledge IoT Gateway - Backup Restore OS Command Injection via Tar Member Filename |
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Fledge-iot
Fledge-iot fledge |
|
| Vendors & Products |
Fledge-iot
Fledge-iot fledge |
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
| Type | Values Removed | Values Added |
|---|---|---|
| Description | Fledge's backup-restore upload handler, upload_backup() (python/fledge/services/core/api/backup_restore.py), takes the first extracted tar member's filename (tar_file_names[0]) and builds a shell command via string formatting: `cmd = "cp {} {}".format(source, backup_path); ret_code = os.system(cmd)`. The only pre-check on the filename is a prefix/suffix match (startswith(backup_prefix), endswith(valid_extensions)), which a name such as `fledge_backup_$(id>/tmp/pwn).db` satisfies while still injecting a shell command substitution. Because os.system() invokes a shell and no quoting (shlex.quote, list-form subprocess) is applied, an admin uploading a crafted backup archive achieves arbitrary OS command execution. | |
| Title | Fledge IoT Gateway Backup Restore OS Command Injection via Tar Member Filename | |
| Weaknesses | CWE-78 | |
| References |
| |
| Metrics |
cvssV3_1
|