Die Sicherheitsforscher der Varonis Threat Labs haben Schwachstellen und Fehlkonfigurationen mit hohem und kritischem Schweregrad in Apex identifiziert, einer Java-ähnlichen Programmiersprache, die häufig zur individuellen Anpassung von Salesforce-Instanzen verwendet wird. Entsprechende Sicherheitslücken wurden bei mehreren Fortune-500-Unternehmen und Regierungsbehörden identifiziert. Da Apex-Code in vielen Standardanwendungen verwendet wird, sind Unternehmen jeder Größe in den unterschiedlichsten Branchen gefährdet. Durch die Ausnutzung der Schwachstellen können Cyberkriminelle Daten entwenden oder korrumpieren sowie Salesforce-Prozesse stören. Anwender sollten deshalb insbesondere ihre Apex-Klassen überprüfen und gegebenenfalls unnötige Berechtigungen reduzieren.
Was ist Apex?
Apex ist eines der am häufigsten verwendeten Tools zum Anpassen von Salesforce-Instanzen. Mit der streng typisierten, objektorientierten Programmiersprache können Benutzer ihren eigenen Code und ihre eigene Logik schreiben und Geschäftslogik in die meisten Systemereignisse wie Klicks auf Schaltflächen, die Aktualisierung verwandter Datensätze und Visualforce-Seiten integrieren. Hierbei werden unter anderem Klassen verwendet. Diese sind Vorlagen oder Entwürfe zum Erstellen von Apex-Objekten und bestehen aus anderen Klassen, benutzerdefinierten Methoden, Variablen, Ausnahmetypen und statischem Initialisierungscode. Apex steuert viele Salesforce-Funktionen und macht Salesforce dadurch so leistungsfähig und anpassbar. Dies kann jedoch auch Sicherheitsrisiken eröffnen.
Gemäß dem Modell der geteilten Verantwortung sind die Salesforce-Kunden und nicht Salesforce für die Sicherheit des von ihnen implementierten Apex-Codes verantwortlich. Entsprechend liegt es in ihrer Verantwortung, anfällige Apex-Klassen, -Auslöser oder -Code zu beheben.
Besondere Risiken gehen dabei vom „without sharing“-Modus aus. Hierbei ignoriert der Code die Berechtigungen des Benutzers und kann auf jeden Datensatz zugreifen und Änderungen übertragen. Apex-Klassen, die auf diese Weise ausgeführt werden, stellen leistungsstarke und wichtige Funktionalitäten bereit, die häufig erforderlich sind, um ordnungsgemäß zu funktionieren. Gleichzeitig erhöht dieser Modus auch das Risiko und sollte mit Vorsicht verwendet werden, insbesondere wenn er Gast- oder externen Benutzern zugewiesen wird. So ist es beispielsweise möglich, Daten aus einem Benutzerdatensatz ohne entsprechende Berechtigung mithilfe von anfälligen Apex-Klassen abzurufen. Wie dies im Detail funktioniert, zeigen die Sicherheitsforscher in ihrem Blog.
Was Apex-Nutzer jetzt tun sollten
Apex ist ein wesentlicher Bestandteil von Salesforce. Um die Sicherheit der eigenen Salesforce-Instanz zu gewährleisten, ist es wichtig, die verschiedenen Apex-Klassen zu überprüfen, mit besonderem Augenmerk auf solche, die als „without sharing“ deklariert sind. Dieser Prozess kann manuell durchgeführt werden, erfordert aber viel Zeit und Aufwand. Hierzu müssen sowohl sämtliche Profile als auch Berechtigungssätze überprüft werden:
- Navigieren Sie zu den Salesforce-Einstellungen der aktuellen Anwendung.
- Wählen Sie „Profile“ im Abschnitt Benutzer.
- Klicken Sie zunächst auf jedes Profil in der Liste und prüfen Sie, was im Abschnitt „Aktivierter Apex-Klassenzugriff“ oben steht, oder scrollen Sie innerhalb des Profils nach unten zu „Aktivierter Apex-Klassenzugriff“, um die Rechte anzuzeigen.
- Überprüfen Sie Ihre Berechtigungssätze für jeden Eintrag, indem Sie sie einzeln anklicken und dann nach unten zum Abschnitt Apps scrollen und nach der Option Apex-Klassenzugriff suchen. Stellen Sie so fest, welche Benutzer auf diese Apex-Klassen zugreifen können.
- Um festzustellen, ob die Apex-Klasse so konfiguriert ist, dass sie „without sharing“ ausgeführt wird, müssen Sie den Quellcode der Klasse überprüfen. Suchen Sie nach der Klassendeklaration (normalerweise eine der ersten Zeilen). Wenn sie die Zeichenfolge „without sharing“ enthält, ignoriert die Klasse Freigaben und kann auf alle Datensätze zugreifen.
- Stellen Sie sicher, dass Apex-Klassen von Sicherheitsexperten und nicht nur von Salesforce-Entwicklern und -Administratoren überprüft wurden. Bei Code, der Teil eines AppExchange-Pakets ist, ist dies in aller Regel der Fall – oftmals im Gegensatz zu intern geschriebenem Code.
Varonis-Kunden können die Zugriffsrechte auf der „Posture“-Seite einsehen und Apex-Klassen leicht filtern. Wenn die Ereignisüberwachung aktiviert ist, können sie zudem erkennen, welche Gast-, Community- und internen Benutzer die Apex-Methoden aufrufen und unnötige Berechtigungen entfernen. Auf diese Weise lässt sich der Explosionsradius deutlich reduzieren. Weitere Tipps zur Salesforce- und Apex-Sicherheit finden sich im entsprechenden Blog.
„Anfällige Apex-Klassen können zu Datenverlusten und -manipulationen führen“, erklärt Sven Carlsen, Sales Engineer von Varonis. „Da letztlich die Salesforce-Kunden für die Sicherheit des von ihnen implementierten Apex-Codes verantwortlich sind, müssen Unternehmen die Apex-Klassen und ihre Eigenschaften sicher verwalten und wissen, wer sie ausführen darf und wie sie verwendet werden. Code ist niemals fehlerfrei und Unternehmen könnten versehentlich Informationen preisgeben, wenn sie nicht vorsichtig sind!“
#Varonis