HexBrain

Internet Bug Bounty · Report #1912777

CVE-2023-27534: SFTP path ~ resolving discrepancy

Validstatus
lowseverity
$480bounty
10upvotes
20 Mar 2023disclosed

Summary

CVE-2023-27534: SFTP path ~ resolving discrepancy

Project curl Security Advisory, March 20th 2023 - Permalink

VULNERABILITY

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 suprisingly access the file /home/dan2/foo.

This can be taken advantage of to circumvent filtering or worse.

We are not aware of any exploit of this flaw.

INFO

CVE-2023-27534 was introduced in commit ba6f20a244, shipped in curl 7.18.0.

CWE-22: Improper Limitation of a Pathname to a Restricted Directory

Severity: Low

AFFECTED VERSIONS

libcurl is used by many applications, but not always advertised as such!

THE SOLUTION

A fix for CVE-2023-27534

RECOMMENDATIONS

A - Upgrade curl to version 8.0.0

B - Apply the patch to your local version

C - Avoid using tilde in SFTP URL paths.

How it was found

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.

Hackerone report

#1892351

Impact

Circumventing filtering.

This report was disclosed publicly on HackerOne and belongs to its author and the program. See the original