
Tekunda Team

Tekunda Team

Kurz gesagt: Ein False Positive ist ein Scanner-Befund, der Code markiert, der gar nicht verwundbar ist. Salesforce will nicht, dass du ihn stumm schaltest, sondern eine schriftliche Begruendung fuer jeden einzelnen: Scanner und Regel, die genaue Datei und Zeile, den Datenpfad und die Kontrolle, die den Code bereits schuetzt. Vage Ein-Zeilen-Abweisungen sind der haeufigste Grund, warum ein False-Positive-Dokument mit Rueckfragen zurueckkommt.
Jede AppExchange-Security-Review-Einreichung enthaelt Scan-Berichte, und keine echte Codebasis scannt vollkommen sauber. Manche Befunde sind echte Probleme, die du behebst. Andere markieren Code, der bereits sicher ist, und die dokumentierst du. In diesem Leitfaden geht es um die zweite Gruppe: wie du False-Positive-Begruendungen schreibst, die das Salesforce-Security-Review-Team akzeptiert, und welche Fehler zu Ablehnung fuehren. Zu den Befunden, die du tatsaechlich beheben solltest, und der Reihenfolge dafuer, siehe Salesforce Security Review Checkliste: was Sie beheben, und in welcher Reihenfolge.
Ein False Positive ist ein Befund, der fuer deinen Code technisch falsch ist, nicht einer, mit dem du dich lieber nicht befassen moechtest. Ein Scanner markiert ein Muster; ob dieses Muster ausnutzbar ist, haengt von Kontext ab, den der Scanner nicht immer sieht. Ist der Code wirklich geschuetzt, hast du ein False Positive zu dokumentieren. Bist du nicht sicher, dass er geschuetzt ist, behandle ihn als echten Befund und behebe ihn, denn Raten ist hier genau das, was ein Dokument in eine Ablehnung verwandelt.
Die Kategorien, die oft genug wiederkehren, um damit zu planen, sind:
WITH USER_MODE oder AccessLevel.USER_MODE laeuft.
Bevor du eine einzige Begruendung schreibst, wisse, welche Befunde du ueberhaupt adressieren musst. Die Schwelle ist nicht null Befunde, und sie aendert sich je nach Tool:
Alles oberhalb der Rauschgrenze wird entweder behoben oder dokumentiert. Es gibt keine dritte Option, es still zu ignorieren.
Salesforce verlangt ein Dokument, das erklaert, warum jeder markierte Punkt kein Sicherheitsrisiko darstellt, und weist dich an, konkret zu sein, wie du gegen die vom Scanner angezeigte Schwachstelle schuetzt. Recht zu haben reicht nicht. Der Pruefer liest das Dokument, also muss das Dokument es beweisen.
Gib jedem markierten Punkt einen eigenen Eintrag statt eines pauschalen Absatzes. Ein starker Eintrag beantwortet der Reihe nach:
Schreibe es so, dass jemand, der deinen Code nie gesehen hat, dem Pfad von der Eingabe bis zur Kontrolle folgen und zustimmen kann, dass er sicher ist. Das ist der ganze Test.
Die Ablehnungen, die wir sehen, gruppieren sich in eine Handvoll vermeidbarer Fehler:
Salesforce auditiert gelistete Packages periodisch neu, was bedeutet, dass du False-Positive-Begruendungen mehr als einmal schreibst. Wenn deine Package-Metadaten in der Versionskontrolle liegen, sind jede Permission Set, Sharing Rule und Named Credential versioniert, sodass du auf die genaue Kontrolle zeigen kannst, die eine Begruendung stuetzt, und belegst, dass sie sich nicht geaendert hat. Teams, die Metadaten als Code behandeln, verwenden das Dokument vom letzten Jahr wieder, statt die Begruendung neu zu rekonstruieren.
Wenn du lieber einen Partner haettest, der die Review schon bestanden hat und diese Begruendungen mit dir schreibt: Tekunda baut und verpackt AppExchange-Produkte als Salesforce PDO.
Kann ich einen Befund einfach unterdruecken, statt ihn zu dokumentieren?
Nein. Alles oberhalb der Rauschschwelle des Scanners wird entweder behoben oder im False-Positive-Dokument erklaert. Ein unterdrueckter Befund ohne Begruendung liest sich als unbearbeitet.
Wie detailliert muss jeder Eintrag sein?
Detailliert genug, damit ein Pruefer den Code findet und die Kontrolle bestaetigt, ohne dich zu fragen. In der Praxis sind das Scanner und Regel, Datei und Zeile, der Datenpfad und die genaue Kontrolle, die schuetzt.
Brauchen dynamische False Positives zusaetzlichen Nachweis?
Ja. Haenge einen Screenshot an, der beweist, dass der richtige Endpunkt gescannt wurde, sonst liest sich der Befund als ungetestet statt sicher.