Security Advisory

FusionAuth Unauthenticated Local File Disclosure

Aufgrund einer unzureichenden Prüfung im Handler für statische Dateien können Angreifer Zugriff auf lokale Dateien des FusionAuth Systems erhalten.

Advisory ID: MLSA-2023-004
CVE: none
CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Kritikalität: high
Betroffene Versionen: ≥ 1.37.0
Behoben in: ≥ 1.46.0
Gefunden von: Hans-Martin Münch, Timo Müller

Produktbeschreibung (englisch)

FusionAuth is the customer authentication and authorization platform that makes developers’ lives awesome. You’ll get all the features your app needs plus a customizable, scalable solution you can run on any computer, anywhere in the world.

Details

FusionAuth verwendet das Prime MVC-Framework für das Web-Frontend. In Prime MVC werden eingehende HTTP-Anfragen durch mehrere Workflow-Handler verarbeitet. Der folgende Code zeigt die “perform”-Methode der Klasse StaticResourceWorkflow, welche für die Bereitstellung statischer Dateien verantwortlich ist.

 1  public void perform(WorkflowChain workflowChain) throws IOException {
 2    boolean handled = false;
 3
 4    // Ensure that this is a request for a resource and not a class
 5    String uri = HTTPTools.getRequestURI(request);
 6    String sanitized = HTTPTools.sanitizeURI(uri);
 7    if (sanitized == null) {
 8      logger.debug("Unable to load static resource at uri [{}]", uri);
 9      workflowChain.continueWorkflow();
10      return;
11    }
12
13    try {
14      handled = findStaticResource(uri, request, response);
15    } catch (RuntimeException | IOException e) {
16      logger.error("Unable to load static resource at uri [{}]", uri);
17      throw e;
18    }
19
20    if (!handled) {
21      workflowChain.continueWorkflow();
22    }
23  }

Die Methode HTTPTools.sanitizeURI() versucht, die vom Benutzer kontrollierte URI zu valideren. Aufgrund einer Schwachstelle im Sanitization-Code war es möglich, den Filter zu umgehen und auf beliebige Dateien im Dateisystem zuzugreifen.

Da FusionAuth als niedrig privilegierter Benutzer ausgeführt wird, hat der Prozess keinen Lesezugriff auf sensible Dateien. Die Ausnahme ist die FusionAuth-Konfigurationsdatei (die ein Datenbank-Passwort enthalten kann).

Coordinated Disclosure Zeitverlauf

  • 25/05/2023 Initiale Kontakt mit FusionAuth, Übergabe eines Security Reports.
  • 25/05/2023 Bestätgiung durch FusionAuth.
  • 23/06/2023 FusionAuth veröffentlicht Version 1.46.0, versand einer Security-Meldung an FusionAuth Kunden.