HexBrain

Nextcloud · Report #1720822

Suspicious login app ships old league/flysystem version

Validstatus
17upvotes
8 Feb 2023disclosed

Summary

Security advisory at https://github.com/nextcloud/security-advisories/security/advisories/GHSA-mhpq-rrg8-9gfr

How it was found

Summary:

The vulnerability allows a remote attacker to compromise vulnerable system. The vulnerability exists due to a race condition. A remote attacker can send a specially crafted request and execute arbitrary code on the target system. Flysystem: 0.1.0 - 2.1.0

https://github.com/nextcloud/suspicious_login/

<?php
namespace League\Flysystem;
use RuntimeException;
final class CorruptedPathDetected extends RuntimeException implements FilesystemException
{
    public static function forPath(string $path): CorruptedPathDetected
    {
        return new CorruptedPathDetected("Corrupted path detected: " . $path);
    }
}
   {
        $path = str_replace('\\', '/', $path);
        $path = $this->removeFunkyWhiteSpace($path);
        $this->rejectFunkyWhiteSpace($path);

Supporting References: The unicode whitespace removal has been replaced with a rejection (exception). The library has been patched in:

CVE-2021-32708 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H GHSA-9f46-5r25-5wfm

Impact

The whitespace normalisation using in 1.x and 2.x removes any unicode whitespace. Under certain specific conditions this could potentially allow a malicious user to execute code remotely.

The conditions:

  • A user is allowed to supply the path or filename of an uploaded file.
  • The supplied path or filename is not checked against unicode chars.
  • The supplied pathname checked against an extension deny-list, not an allow-list.
  • The supplied path or filename contains a unicode whitespace char in the extension.
  • The uploaded file is stored in a directory that allows PHP code to be executed.

Given these conditions are met a user can upload and execute arbitrary code on the system under attack.

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