
Tekunda Team

Tekunda Team

En bref : Un faux positif est un constat de scanner qui signale du code qui n'est pas réellement vulnérable. Salesforce ne veut pas que vous le fassiez taire, mais une justification écrite pour chacun : le scanner et la règle, le fichier et la ligne exacts, le chemin des données, et le contrôle qui protège déjà le code. Les rejets en une ligne, vagues, sont la raison la plus fréquente pour laquelle un document de faux positifs revient avec des questions.
Chaque soumission à la security review AppExchange contient des rapports de scan, et aucune vraie base de code ne scanne parfaitement propre. Certains constats sont de vrais problèmes que vous corrigez. D'autres signalent du code déjà sûr, et ceux-là, vous les documentez. Ce guide porte sur le second groupe : comment rédiger des justifications de faux positifs que l'équipe de security review Salesforce accepte, et les erreurs qui les font rejeter. Pour les constats à corriger réellement, et l'ordre pour le faire, voir Checklist de la security review Salesforce : quoi corriger, et dans quel ordre.
Un faux positif est un constat techniquement faux pour votre code, pas un constat dont vous préféreriez ne pas vous occuper. Un scanner signale un motif ; que ce motif soit exploitable dépend d'un contexte que le scanner ne voit pas toujours. Si le code est réellement protégé, vous avez un faux positif à documenter. Si vous n'êtes pas sûr qu'il soit protégé, traitez-le comme un vrai constat et corrigez-le, car deviner ici est précisément ce qui transforme un document en rejet.
Les catégories qui reviennent assez souvent pour les anticiper sont :
WITH USER_MODE ou
AccessLevel.USER_MODE.
Avant de rédiger une seule justification, sachez quels constats vous devez même traiter. Le seuil n'est pas zéro constat, et il change selon l'outil :
Tout ce qui dépasse le bruit est soit corrigé, soit documenté. Il n'y a pas de troisième option consistant à l'ignorer en silence.
Salesforce demande un document expliquant pourquoi chaque élément signalé ne pose pas de risque de sécurité, et vous demande d'être précis sur la manière dont vous protégez contre la vulnérabilité indiquée par le scanner. Avoir raison ne suffit pas. Le relecteur lit le document, donc c'est le document qui doit le prouver.
Donnez à chaque élément signalé sa propre entrée plutôt qu'un seul paragraphe général. Une entrée solide répond, dans l'ordre :
Rédigez-la pour que quelqu'un qui n'a jamais ouvert votre code puisse suivre le chemin de l'entrée jusqu'au contrôle et convenir qu'il est sûr. C'est tout le test.
Les rejets que nous voyons se regroupent en quelques erreurs évitables :
Salesforce re-audite périodiquement les packages publiés, ce qui signifie que vous rédigerez des justifications de faux positifs plus d'une fois. Quand les métadonnées de votre package vivent dans un contrôle de source, chaque permission set, sharing rule et named credential est versionné, ce qui vous permet de pointer le contrôle exact qui soutient une justification et de montrer qu'il n'a pas changé. Les équipes qui traitent les métadonnées comme du code réutilisent le document de l'an dernier au lieu de reconstruire le raisonnement de zéro.
Si vous préférez un partenaire qui a déjà passé la revue pour rédiger ces justifications avec vous, Tekunda construit et empaquette des produits AppExchange en tant que PDO Salesforce.
Puis-je simplement supprimer un constat au lieu de le documenter ?
Non. Tout ce qui dépasse le seuil de bruit du scanner est soit corrigé, soit expliqué dans le document de faux positifs. Un constat supprimé sans justification se lit comme non traité.
Quel niveau de détail chaque entrée exige-t-elle ?
Assez pour qu'un relecteur localise le code et confirme le contrôle sans vous demander. En pratique : scanner et règle, fichier et ligne, chemin des données, et le contrôle exact qui protège.
Les faux positifs dynamiques demandent-ils une preuve supplémentaire ?
Oui. Joignez une capture prouvant que le bon endpoint a été scanné, sinon le constat se lit comme non testé plutôt que sûr.