Salesforce Aura: Mögliche Schwachstellen in der „Ohne Freigabe“-Anmerkung

Seit 2010 ist Onapsis-Forschungslabore hat sich auf die kontinuierliche Analyse und Untersuchung von Entwicklungen in geschäftskritischen Anwendungen konzentriert, um neue Schwachstellen zu entdecken und zu identifizieren. Bis heute haben sie über 800 Zero-Day-Schwachstellen entdeckt und aus ihrer neuartigen Forschung gingen mehrere kritische CERT-Warnungen hervor.

Zuvor konzentrierte sich das Team ausschließlich auf SAP- und Oracle-On-Premise-Systeme. Da jedoch geschäftskritische Anwendungen von Unternehmen um Cloud-Angebote erweitert wurden und Unternehmen sich für die Führung ihrer Geschäfte nativen SaaS-Anwendungen zuwenden, haben die Onapsis Research Labs ihre Forschung und Untersuchungen ausgeweitet, um Schwachstellen in vielen dieser Anwendungen, wie z. B. Salesforce, einzubeziehen.

Der Salesforce Winter '21-Patch für Aura sollte das Sicherheitsrisiko beheben, das jedem authentifizierten Benutzer die Möglichkeit gab, Webdienste zu verwenden, die mit dem @auraenabled-Dekorator bereitgestellt wurden. Onapsis Research Labs hat jedoch einige Sicherheitsbedenken, die wir in Aura festgestellt haben und die wir in diesem Blogbeitrag behandeln werden. Unser Anliegen konzentriert sich auf die Verwendung des @auraenabled-Dekorators in Kombination mit der Annotation „ohne Teilen“. Um das zu zitieren Salesforce-Dokumentation zu dieser Anmerkung: „Verwenden Sie beim Deklarieren einer Klasse die Schlüsselwörter without shared, um sicherzustellen, dass die Freigaberegeln für den aktuellen Benutzer nicht erzwungen werden.“

Was ist Aura? 

Aura ist ein UI-Framework, das in Salesforce zur Entwicklung von Webanwendungen verwendet wird. Aura-Komponenten bestehen aus mehreren Feilenteilen. Detaillierte Informationen zu allen Komponenten erhalten Sie hier Sehen Sie sich die Dokumentation an. Die in JavaScript geschriebene Client-Side-Controller-Ressource ist die Art und Weise, wie die Aura-Komponente die Logik implementiert, die zum Behandeln von Ereignissen in einer Anwendung mit eingebetteter Aura-Komponente erforderlich ist. Ein Beispiel hierfür ist eine Schaltfläche „Suchen“, mit der Benutzer nach Kontaktnamen suchen können. 

Der clientseitige Controller empfängt die Nachricht, wenn die Suchaktion ausgeführt wird, in Form von „Ereignissen“ und sendet die Informationen an den Server. Es hat keinen direkten Zugriff auf die Informationen oder Datenbank von Salesforce, sondern wird im Client (d. h. einem Webbrowser) ausgeführt. Es erstellt die entsprechenden HTTP-Anfragen mit den vom Benutzer bereitgestellten Informationen und sendet sie an eine andere Ressource: den Server-Side Controller. 

Clientseitige Controller sind JavaScript-Objekte, die Aktionen in Form von JavaScript-Funktionen implementieren. Da sie Teil des clientseitigen Controllers sind, werden sie als clientseitige Aktionen bezeichnet. Sie werden von der Komponente Aura-Ressource verwendet.

Der serverseitige Controller ist nicht Teil der Aura-Komponente. Technisch gesehen handelt es sich um eine Apex-Klasse, eine Vorlage zum Erstellen von Objekten, die von externen Ressourcen verwendet werden, genau wie ein Webdienst. Es wird mit erstellt @auraenabled-Anmerkung Methodik.

Sicherheitslücke in der Anmerkung „Ohne Freigabe“.

Nachdem wir nun Aura erklärt haben, wollen wir die Sicherheitslücke skizzieren, die wir mithilfe von @auraenabled in Kombination mit der Annotation „ohne Freigabe“ gefunden haben.

Betrachten Sie beispielsweise einen erstellten Salesforce-Benutzer mit einem Profil, das keinen Zugriff auf das Standardobjekt „Kontakt“ hat. Mit anderen Worten: Dieser Benutzer sollte keinen Zugriff auf Kontakte in Salesforce haben. Das heißt, wenn der Benutzer einen Namen in das Kontaktsuchfeld eingibt und die Funktion ausführt, werden keine Kontakte zurückgegeben. Der serverseitige Controller lässt nicht zu, dass die Kontakte vom Benutzer angezeigt werden, da der Benutzer nicht das Recht hat, Kontakte anzuzeigen.

Wenn jedoch trotz des Profils dieses Benutzers das Schlüsselwort „ohne Freigabe“ zum serverseitigen Controller hinzugefügt wird und der Benutzer diese Suche ausführt, werden Kontakte zurückgegeben. Dieses Ergebnis ist besorgniserregend, denn es bedeutet, dass Kontakte trotzdem geteilt werden, selbst wenn der Benutzer keine Zugriffsrechte hat, weil das Schlüsselwort „ohne Teilen“ vorhanden ist. Es gibt keine Berechtigungsprüfung, um zu überprüfen, ob der Benutzer diesen Zugriff haben soll, er ist lediglich aktiviert. 

Das Schlüsselwort „without Sharing“ ist ein gefährlicher Modifikator, der mit äußerster Vorsicht verwendet werden sollte, da es jedem Benutzer den Zugriff auf Funktionen ermöglicht, unabhängig von seinen Berechtigungen. Beim Hinzufügen dieses Tags zu einer beliebigen Apex-Klasse können komplizierte Probleme auftreten. Wenn jedoch eine Methode dieser Klasse mit @auraenabled versehen ist, können noch größere Sicherheitsprobleme auftreten. Salesforce hat vor diesem Hintergrund den Aura-fähigen Scanner entwickelt.

Der Aura-fähige Scanner 

Das AuraEnabledScanner hilft Entwicklern und Administratoren, alle Klassen innerhalb einer Organisation aufzulisten, die mindestens eine Methode mit @auraenabled haben. Darüber hinaus werden die Klassen hervorgehoben, die nicht leicht zugänglich sein sollten, und über eine benutzerfreundliche Oberfläche kann konfiguriert werden, wer darauf zugreifen soll. 

Trotz der Methode zur Behebung dieser Schwachstelle ist die Konfiguration all dieser Berechtigungen, insbesondere in Produktionsorganisationen, eine anspruchsvolle Aufgabe. Eine Organisation kann über Dutzende oder sogar Hunderte von Methoden verfügen, die mit @auraenabled dekoriert sind. Dies führt zu einem unglaublich komplexen Prozess, bei dem festgelegt wird, welche Benutzer Zugriff auf welche Klassen haben sollen, und um sicherzustellen, dass alle Benutzer und Klassen in die Analyse einbezogen werden.

Es ist wichtig zu beachten, dass möglicherweise Fehlkonfigurationen und Schwachstellen auftreten können, wenn Administratoren unter Zeitdruck Zulassungslistenkonfigurationen erstellen, um ein Sicherheitsproblem zu beheben. Manchmal fehlt Administratoren und Entwicklern die Zeit, die richtigen Werte richtig festzulegen, und sie fügen möglicherweise standardmäßig alles hinzu, nur um es zum Laufen zu bringen. Es ist wichtig, diese Sanierung sorgfältig durchzuführen. 

Um mehr über Onapsis und Salesforce zu erfahren, lesen Sie Unser Blog or Sehen Sie sich unser On-Demand-Webinar an über Cybersicherheit und Compliance für Salesforce.