curl supports SFTP transfers. curl's SFTP implementation offers a special
feature in the path component of URLs: a tilde (~
) character as the first
path element in the path to denotes a path relative to the user's home
directory. This is supported because of wording in the once proposed
to-become RFC
draft
that was to dictate how SFTP URLs work.
Due to a bug, the handling of the tilde in SFTP path did however not only replace it when it is used stand-alone as the first path element but also wrongly when used as a mere prefix in the first element.
Using a path like /~2/foo
when accessing a server using the user dan
(with
home directory /home/dan
) would then quite surprisingly access the file
/home/dan2/foo
.
This can be taken advantage of to circumvent filtering or worse.
{ "CWE": { "id": "CWE-22", "desc": "Improper Limitation of a Pathname to a Restricted Directory" }, "award": { "amount": "480", "currency": "USD" }, "URL": "https://curl.se/docs/CVE-2023-27534.json", "package": "curl", "severity": "Low", "issue": "https://hackerone.com/reports/1892351", "www": "https://curl.se/docs/CVE-2023-27534.html", "last_affected": "7.88.1" }