OWASP

Serenetics s'engage à respecter les bonnes pratiques établies par l'OWASP v2.0.1

SÉCURISATION DU CODE

La sécurisation du code est un aspect crucial du développement de logiciels et chez Cybernetics nous prenons cela très au sérieux. Serenetics respecte une sécurité dès conception (security by design).

VALIDATION DES ENTRÉES

Les différentes entrées renseignées par les utilisateurs sont contrôlées par Serenetics.

1.1 Effectuer la validation de toutes les données sur un système fiable

Effectuer la validation de toutes les données sur un système fiable.

1.2 Identifier toutes les sources de données et les classer en fiables et non fiables

Identifier toutes les sources de données et les classer en fiables et non fiables. Valider toutes les données provenant de sources non fiables.

1.3 Valider toutes les données provenant de sources non fiables

Identifier toutes les données provenant de sources non fiables.

1.4 Il doit y avoir une routine centralisée de validation des entrées pour l'application

Il doit y avoir une routine centralisée de validation des entrées pour l'application.

1.5 Spécifier les jeux de caractères appropriés, tels que UTF-8, pour toutes les sources d'entrées

Spécifier les jeux de caractères appropriés, tels que UTF-8, pour toutes les sources d'entrées.

1.6 Encoder les données dans un jeu de caractères commun avant de valider

Encoder les données dans un jeu de caractères commun avant de valider (canonicalize).

1.7 Tous les échecs de validation devraient entrainer le rejet de l'entrée

Tous les échecs de validation devraient entrainer le rejet de l'entrée.

1.8 Vérifier si le système prend en charge les jeux de caractères étendus UTF-8 et les valide une fois le décodage UTF-8 terminé

Vérifier si le système prend en charge les jeux de caractères étendus UTF-8 et les valide une fois le décodage UTF-8 terminé.

1.9 Valider toutes les données fournies par le client avant le traitement

Valider toutes les données fournies par le client avant le traitement.

1.10 Vérifier que les valeurs d'en-tête de protocole dans les requêtes et les réponses contiennent uniquement des caractères ASCII

Vérifier que les valeurs d'en-tête de protocole dans les requêtes et les réponses contiennent uniquement des caractères ASCII.

1.11 Valider les données des redirections

Valider les données des redirections.

1.12 Valider les types de données attendus en utilisant une liste « autoriser » plutôt qu'une liste « refuser »

Valider les types de données attendus en utilisant une liste « autoriser » plutôt qu'une liste « refuser ».

1.13 Valider la plage de données

Valider la plage de données.

1.14 Valider la longueur des données

Valider la longueur des données.

1.15 Si une entrée potentiellement dangereuse doit être autorisée, mettre en œuvre des contrôles supplémentaires

Si une entrée potentiellement dangereuse doit être autorisée, mettre en œuvre des contrôles supplémentaires.

1.16 Si la routine de validation standard ne peut pas traiter certaines entrées, utiliser des contrôles discrets supplémentaires

Si la routine de validation standard ne peut pas traiter certaines entrées, utiliser des contrôles discrets supplémentaires.

1.17 Utiliser la canonisation pour répondre aux attaques d'obscurcissement

Utiliser la canonisation pour répondre aux attaques d'obscurcissement.

ENCODAGE DE SORTIE

Les différentes sorties renseignées sont contrôlées par Serenetics.

2.1 Effectuer tout le codage sur un système de confiance

Effectuer tout le codage sur un système de confiance.

2.2 Utiliser une routine standard testée pour chaque type d'encodage sortant

Utiliser une routine standard testée pour chaque type d'encodage sortant.

2.3 Spécifier des jeux de caractères, tels que UTF-8, pour toutes les sorties

Spécifiez des jeux de caractères, tels que UTF-8, pour toutes les sorties.

2.4 La sortie contextuelle encode toutes les données renvoyées au client à partir de sources non fiables

La sortie contextuelle encode toutes les données renvoyées au client à partir de sources non fiables.

2.5 S'assurer que le codage de sortie est sûr pour tous les systèmes cibles

S'assurer que le codage de sortie est sûr pour tous les systèmes cibles.

2.6 Nettoyer contextuellement toutes les sorties de données non fiables dans les requêtes SQL, XML et LDAP

Pour toutes les requêtes SQL, l'ORM nous assure un nettoyage des donnée avant stockage en base de donnée. Nous n'avons pas de requête XML et LDAP pour l'application.

2.7 Nettoyer toutes les sorties de données non fiables vers les commandes du système d'exploitation

Nettoyer toutes les sorties de données non fiables vers les commandes du système d'exploitation.

AUTHENTIFICATION ET GESTION DES MOTS DE PASSE

La gestion de l'authentification est contrôlée par Serenetics.

3.1 Exiger une authentification pour toutes les pages et ressources sauf celles spécifiquement destinées à être publiques

Exiger une authentification pour toutes les pages et ressources sauf celles spécifiquement destinées à être publiques.

3.2 Tous les contrôles d'authentification doivent être appliqués sur un système de confiance

Tous les contrôles d'authentification doivent être appliqués sur un système de confiance.

3.3 Établir et utiliser des services d'authentification standard et testés dans la mesure du possible

Établir et utiliser des services d'authentification standard et testés dans la mesure du possible.

3.4 UtiliseR une implémentation centralisée pour tous les contrôles d'authentification, y compris les bibliothèques qui appellent des services d'authentification externes

UtiliseR une implémentation centralisée pour tous les contrôles d'authentification, y compris les bibliothèques qui appellent des services d'authentification externes.

3.5 Séparer la logique d'authentification de la ressource demandée et utiliser la redirection vers et depuis le contrôle d'authentification centralisé

Séparer la logique d'authentification de la ressource demandée et utiliser la redirection vers et depuis le contrôle d'authentification centralisé.

3.6 Tous les contrôles d'authentification devraient échouer en toute sécurité

Tous les contrôles d'authentification devraient échouer en toute sécurité.

3.7 Toutes les fonctions administratives et de gestion de compte doivent être au moins aussi sécurisées que le mécanisme d'authentification principal

Toutes les fonctions administratives et de gestion de compte doivent être au moins aussi sécurisées que le mécanisme d'authentification principal.

3.8 Si l'application gère un magasin d'informations d'identification, utiliser des hachages salés unidirectionnels cryptographiquement forts

Si l'application gère un magasin d'informations d'identification, utiliser des hachages salés unidirectionnels cryptographiquement forts.

3.9 Le hachage du mot de passe doit être implémenté côté serveur d'un système de confiance et non côté client

Le hachage du mot de passe doit être implémenté côté serveur d'un système de confiance et non côté client.

3.10 Valider les données d'authentification uniquement à la fin de toutes les saisies de données

Valider les données d'authentification uniquement à la fin de toutes les saisies de données.

3.11 Les réponses aux échecs d'authentification ne doivent pas indiquer quelle partie des données d'authentification était incorrecte

Les réponses aux échecs d'authentification ne doivent pas indiquer quelle partie des données d'authentification était incorrecte.

3.12 Utiliser l'authentification pour les connexions à des systèmes externes impliquant des informations ou des fonctions sensibles

Utiliser l'authentification pour les connexions à des systèmes externes impliquant des informations ou des fonctions sensibles.

3.13 Les informations d'authentification pour accéder aux services externes à l'application doivent être stockées dans un magasin sécurisé

Les informations d'authentification pour accéder aux services externes à l'application doivent être stockées dans un magasin sécurisé.

3.14 Utiliser uniquement les requêtes http post pour transmettre les identifiants d'authentification

Utiliser uniquement les requêtes http post pour transmettre les identifiants d'authentification.

3.15 Envoyez uniquement des mots de passe non temporaires via une connexion cryptée ou sous forme de données cryptées

Envoyez uniquement des mots de passe non temporaires via une connexion cryptée ou sous forme de données cryptées.

3.16 Appliquer les exigences en matière de complexité des mots de passe établies par la politique ou la réglementation

Appliquer les exigences en matière de complexité des mots de passe établies par la politique ou la réglementation.

3.17 Appliquer les exigences en matière de longueur de mot de passe établies par la politique ou la réglementation

Appliquer les exigences en matière de longueur de mot de passe établies par la politique ou la réglementation.

3.18 La saisie du mot de passe doit être masquée sur l'écran de l'utilisateur

La saisie du mot de passe doit être masquée sur l'écran de l'utilisateur.

3.19 Appliquer la désactivation du compte après un nombre établi de tentatives de connexion invalides

Appliquer la désactivation du compte après un nombre établi de tentatives de connexion invalides.

3.20 Les opérations de réinitialisation et de modification de mot de passe nécessitent le même niveau de contrôle que la création et l'authentification de compte

Les opérations de réinitialisation et de modification de mot de passe nécessitent le même niveau de contrôle que la création et l'authentification de compte.

3.21 Les questions de réinitialisation du mot de passe doivent prendre en charge des réponses suffisamment aléatoires

Les questions de réinitialisation du mot de passe doivent prendre en charge des réponses suffisamment aléatoires.

3.22 Si des réinitialisations par courrier électronique sont mises en place, envoyer uniquement un courrier électronique à une adresse pré-enregistrée avec un lien/mot de passe temporaire

Si des réinitialisations par courrier électronique sont mises en place, envoyer uniquement un courrier électronique à une adresse pré-enregistrée avec un lien/mot de passe temporaire.

3.23 Les mots de passe et les liens temporaires devraient avoir un temps d'expiration court

Les mots de passe et les liens temporaires devraient avoir un temps d'expiration court.

3.24 Imposer le changement du mot de passe temporaire au prochain usage

Appliquer le changement des mots de passe temporaires lors de la prochaine utilisation.

3.25 Avertir les utilisateurs lorsqu'une réinitialisation de mot de passe se produit

Avertir les utilisateurs lorsqu'une réinitialisation de mot de passe se produit.

3.26 Empêcher la réutilisation des mots de passe

Empêcher la réutilisation des mots de passe.

3.27 Les mots de passe doivent dater d'au moins un jour avant de pouvoir être modifiés, afin d'éviter les attaques liées à la réutilisation des mots de passe

Les mots de passe doivent dater d'au moins un jour avant de pouvoir être modifiés, afin d'éviter les attaques liées à la réutilisation des mots de passe.

3.28 Appliquer les changements de mot de passe en fonction des exigences établies dans la politique ou la réglementation, avec le temps entre les réinitialisations contrôlé administrativement

Appliquer les changements de mot de passe en fonction des exigences établies dans la politique ou la réglementation, avec le temps entre les réinitialisations contrôlé administrativement.

3.29 Désactivez la fonctionnalité « Se souvenir de moi » pour les champs de mot de passe

Désactivez la fonctionnalité « Se souvenir de moi » pour les champs de mot de passe.

3.30 La dernière utilisation (réussie ou non) d'un compte utilisateur doit être signalée à l'utilisateur lors de sa prochaine connexion réussie

La dernière utilisation (réussie ou non) d'un compte utilisateur doit être signalée à l'utilisateur lors de sa prochaine connexion réussie.

3.31 Mettre en œuvre une surveillance pour identifier les attaques contre plusieurs comptes d'utilisateurs, en utilisant le même mot de passe

Mettre en œuvre une surveillance pour identifier les attaques contre plusieurs comptes d'utilisateurs, en utilisant le même mot de passe.

3.32 Modifier tous les mots de passe et identifiants utilisateur par défaut fournis par le fournisseur ou désactiver les comptes associés

Modifier tous les mots de passe et identifiants utilisateur par défaut fournis par le fournisseur ou désactiver les comptes associés.

3.33 Réauthentifier les utilisateurs avant d'effectuer des opérations critiques

Réauthentifier les utilisateurs avant d'effectuer des opérations critiques.

3.34 Utiliser l'authentification multifacteur pour les comptes transactionnels très sensibles ou de haute valeur

Utiliser l'authentification multifacteur pour les comptes transactionnels très sensibles ou de haute valeur.

3.35 Si un code tiers est utilisé pour l'authentification, inspecter attentivement le code pour s'assurer qu'il n'est pas affecté par un code malveillant

Si un code tiers est utilisé pour l'authentification, inspectez attentivement le code pour s'assurer qu'il n'est pas affecté par un code malveillant.

GESTION DES SESSIONS

La gestion des sessions est contrôlée par Serenetics.

4.1 Utiliser les commandes de gestion de session du serveur ou du framework. L'application doit uniquement reconnaître ces identifiants de session comme valables

Utiliser les commandes de gestion de session du serveur ou du framework. L'application doit uniquement reconnaître ces identifiants de session comme valables.

4.2 La création de l'identifiant de session doit toujours être effectuée sur un système de confiance (côté serveur et non côté client)

La création d'un identifiant de session doit toujours être effectuée sur un système de confiance (côté serveur et non côté client).

4.3 Les contrôles de gestion de session doivent utiliser des algorithmes bien vérifiés qui garantissent des identifiants de session suffisamment aléatoires

Les contrôles de gestion de session doivent utiliser des algorithmes bien vérifiés qui garantissent des identifiants de session suffisamment aléatoires.

4.4 Définir le domaine et le chemin des cookies contenant des identifiants de session authentifiés sur une valeur restreinte appropriée pour le site

Définir le domaine et le chemin des cookies contenant des identifiants de session authentifiés sur une valeur restreinte appropriée pour le site.

4.5 La fonctionnalité de déconnexion doit mettre fin complètement à la session ou à la connexion associée

La fonctionnalité de déconnexion doit mettre fin complètement à la session ou à la connexion associée.

4.6 La fonctionnalité de déconnexion doit être disponible sur toutes les pages protégées par autorisation

La fonctionnalité de déconnexion doit être disponible sur toutes les pages protégées par autorisation.

4.7 Établir un délai d'inactivité de session aussi court que possible, en fonction de l'équilibre entre les risques et les exigences fonctionnelles de l'entreprise

Établir un délai d'inactivité de session aussi court que possible, en fonction de l'équilibre entre les risques et les exigences fonctionnelles de l'entreprise.

4.8 Interdire les connexions persistantes et imposer des fermetures de session périodiques, même lorsque la session est active

Interdire les connexions persistantes et imposer des fermetures de session périodiques, même lorsque la session est active.

4.9 Si une session a été établie avant la connexion, fermer cette session et établir une nouvelle session après une connexion réussie

Si une session a été établie avant la connexion, fermer cette session et établir une nouvelle session après une connexion réussie.

4.10 Générer un nouvel identifiant de session à toute ré-authentification

Générer un nouvel identifiant de session à toute ré-authentification.

4.11 Ne pas autoriser les connexions simultanées avec le même ID utilisateur

Ne pas autoriser les connexions simultanées avec le même ID utilisateur.

4.12 Ne pas exposer les identifiants de session dans les URL, les messages d'erreur ou les journaux

Ne pas exposer les identifiants de session dans les URL, les messages d'erreur ou les journaux.

4.13 Mettre en œuvre des contrôles d'accès appropriés pour protéger les données de session côté serveur contre tout accès non autorisé d'autres utilisateurs du serveur

Mettre en œuvre des contrôles d'accès appropriés pour protéger les données de session côté serveur contre tout accès non autorisé d'autres utilisateurs du serveur.

4.14 Générer un nouvel identifiant de session et désactiver périodiquement l'ancien

Générer un nouvel identifiant de session et désactiver périodiquement l'ancien.

4.15 Générer un nouvel identifiant de session si la sécurité de la connexion passe de HTTP à HTTPS, comme cela peut se produire lors de l'authentification

Générer un nouvel identifiant de session si la sécurité de la connexion passe de HTTP à HTTPS, comme cela peut se produire lors de l'authentification.

4.16 Utiliser systématiquement HTTPS plutôt que de basculer entre HTTP et HTTPS

Utiliser systématiquement HTTPS plutôt que de basculer entre HTTP et HTTPS.

4.17 Compléter la gestion de session standard pour les opérations sensibles côté serveur, comme la gestion des comptes, en utilisant des jetons ou des paramètres aléatoires forts par session

Compléter la gestion de session standard pour les opérations sensibles côté serveur, comme la gestion des comptes, en utilisant des jetons ou des paramètres aléatoires forts par session.

4.18 Compléter la gestion de session standard pour les opérations hautement sensibles ou critiques en utilisant par requête, plutôt que par session, des jetons ou des paramètres aléatoires forts

Compléter la gestion de session standard pour les opérations hautement sensibles ou critiques en utilisant par requête, plutôt que par session, des jetons ou des paramètres aléatoires fort.

4.19 Définir l'attribut « sécurisé » pour les cookies transmis sur une connexion TLS

Définir l'attribut « sécurisé » pour les cookies transmis sur une connexion TLS.

4.20 Définir des cookies avec l'attribut HttpOnly, sauf si des scripts côté client sont spécifiquement nécessaires dans votre application pour lire ou définir la valeur d'un cookie

Définir des cookies avec l'attribut HttpOnly, sauf si des scripts côté client sont spécifiquement nécessaires dans votre application pour lire ou définir la valeur d'un cookie.

4.21 Protéger les données de session côté serveur contre l'accès non autorisé par d'autres utilisateurs du serveur, en implémentant des contrôles d'accès appropriés sur le serveur

Protéger les données de session côté serveur contre l'accès non autorisé par d'autres utilisateurs du serveur, en implémentant des contrôles d'accès appropriés sur le serveur.

CONTROLE D'ACCÈS

5.1 Utiliser uniquement des objets système de confiance, par exemple objets de session côté serveur, pour prendre des décisions d'autorisation d'accès

Utiliser uniquement des objets système de confiance, par exemple objets de session côté serveur, pour prendre des décisions d'autorisation d'accès.

5.2 Utiliser un seul composant à l’échelle du site pour vérifier l’autorisation d’accès. Cela inclut les bibliothèques qui appellent des services d'autorisation externes

Utiliser un seul composant à l’échelle du site pour vérifier l’autorisation d’accès. Cela inclut les bibliothèques qui appellent des services d'autorisation externes.

5.3 Les contrôles d'accès devraient échouer en toute sécurité

Les contrôles d'accès devraient échouer en toute sécurité.

5.4 Refuser tout accès si l'application ne peut pas accéder à ses informations de configuration de sécurité

Refuser tout accès si l'application ne peut pas accéder à ses informations de configuration de sécurité.

5.5 Appliquer des contrôles d'autorisation sur chaque demande, y compris celles effectuées par des scripts côté serveur

Appliquer des contrôles d'autorisation sur chaque demande, y compris celles effectuées par des scripts côté serveur.

5.6 Séparer la logique privilégiée des autres codes d'application

Séparer la logique privilégiée des autres codes d'application.

5.7 Restreindre l'accès aux fichiers ou autres ressources, y compris ceux extérieurs au contrôle direct de l'application, aux uniques utilisateurs autorisés

Restreindre l'accès aux fichiers ou autres ressources, y compris ceux extérieurs au contrôle direct de l'application, aux uniques utilisateurs autorisés.

5.8 Restreindre l'accès aux URL protégées aux utilisateurs autorisés uniquement

Restreindre l'accès aux URL protégées aux utilisateurs autorisés uniquement.

5.9 Restreindre l’accès aux fonctions protégées aux seuls utilisateurs autorisés

Restreindre l’accès aux fonctions protégées aux seuls utilisateurs autorisés.

5.10 Restreindre les références d'objet directes aux seuls utilisateurs autorisés

Restreindre les références d'objet directes aux seuls utilisateurs autorisés.

5.11 Restreindre l’accès aux services aux seuls utilisateurs autorisés

Restreindre l’accès aux services aux seuls utilisateurs autorisés.

5.12 Restreindre l'accès aux données de l'application aux seuls utilisateurs autorisés

Restreindre l'accès aux données de l'application aux seuls utilisateurs autorisés.

5.13 Restreindre l'accès aux attributs des utilisateurs et des données ainsi qu'aux informations de stratégie utilisées par les contrôles d'accès

Restreindre l'accès aux attributs des utilisateurs et des données ainsi qu'aux informations de stratégie utilisées par les contrôles d'accès.

5.14 Restreindre l'accès aux informations de configuration relatives à la sécurité aux seuls utilisateurs autorisés

Restreindre l'accès aux informations de configuration relatives à la sécurité aux seuls utilisateurs autorisés.

5.15 La mise en œuvre côté serveur et les représentations de la couche de présentation des règles de contrôle d'accès doivent correspondre

La mise en œuvre côté serveur et les représentations de la couche de présentation des règles de contrôle d'accès doivent correspondre.

5.16 Si les données d'état doivent être stockées sur le client, utiliser le cryptage et la vérification d'intégrité côté serveur pour détecter la falsification de l'état

Si les données d'état doivent être stockées sur le client, utiliser le cryptage et la vérification d'intégrité côté serveur pour détecter la falsification de l'état.

5.17 Appliquer les flux logiques des applications pour se conformer aux règles métier

Appliquer les flux logiques des applications pour se conformer aux règles métier

5.18 Limiter le nombre de transactions qu'un seul utilisateur ou appareil peut effectuer sur une période de temps donnée, suffisamment bas pour dissuader les attaques automatisées mais supérieur aux besoins réels de l'entreprise

Limiter le nombre de transactions qu'un seul utilisateur ou appareil peut effectuer sur une période de temps donnée, suffisamment bas pour dissuader les attaques automatisées mais supérieur aux besoins réels de l'entreprise.

5.19 Utiliser l'en-tête "referer" comme vérification supplémentaire uniquement, il ne doit jamais être le seul contrôle d'autorisation car il peut être usurpé

Utiliser l'en-tête "referer" comme vérification supplémentaire uniquement, il ne doit jamais être le seul contrôle d'autorisation car il peut être usurpé.

5.20 Si de longues sessions authentifiées sont autorisées, revalider périodiquement l’autorisation d’un utilisateur pour s'assurer que ses privilèges n’ont pas changé et si c’est c’est le cas, déconnecter l’utilisateur et le forcer à se ré-authentifier

Si de longues sessions authentifiées sont autorisées, revalider périodiquement l’autorisation d’un utilisateur pour s'assurer que ses privilèges n’ont pas changé et si c’est c’est le cas, déconnecter l’utilisateur et le forcer à se ré-authentifier.

5.21 Mettre en œuvre l'audit des comptes et appliquer la désactivation des comptes inutilisés

Mettre en œuvre l'audit des comptes et appliquer la désactivation des comptes inutilisés.

5.22 L'application doit prendre en charge la désactivation des comptes et la fin des sessions lorsque l'autorisation cesse

L'application doit prendre en charge la désactivation des comptes et la fin des sessions lorsque l'autorisation cesse.

5.23 Les comptes de service ou les comptes prenant en charge les connexions vers ou depuis des systèmes externes doivent avoir le moins de privilèges possible

Les comptes de service ou les comptes prenant en charge les connexions vers ou depuis des systèmes externes doivent avoir le moins de privilèges possible.

5.24 Créer une politique de contrôle d'accès pour documenter les règles métier, les types de données et les critères et/ou processus d'autorisation d'accès d'une application afin que l'accès puisse être correctement provisionné et contrôlé. Cela comprend l'identification des exigences d'accès aux données et aux ressources système

Créez une politique de contrôle d'accès pour documenter les règles métier, les types de données et les critères et/ou processus d'autorisation d'accès d'une application afin que l'accès puisse être correctement provisionné et contrôlé. Cela comprend l'identification des exigences d'accès aux données et aux ressources système.

5.25 Les représentations de la mise en œuvre côté serveur et de la couche de présentation des règles de contrôle d'accès doivent correspondre

Les représentations de la mise en œuvre côté serveur et de la couche de présentation des règles de contrôle d'accès doivent correspondre.

PRATIQUES CRYPTOGRAPHIQUES

La gestion des pratiques cryptographiques est contrôlée par Serenetics.

6.1 Toutes les fonctions cryptographiques utilisées pour protéger les secrets de l'utilisateur de l'application doivent être implémentées sur un système de confiance

Toutes les fonctions cryptographiques utilisées pour protéger les secrets de l'utilisateur de l'application doivent être implémentées sur un système de confiance.

6.2 Protéger les secrets contre tout accès non autorisé

Protéger les secrets contre tout accès non autorisé.

6.3 Les modules cryptographiques devraient échouer en toute sécurité

Les modules cryptographiques devraient échouer en toute sécurité.

6.4 Tous les nombres aléatoires, noms de fichiers aléatoires, GUID aléatoires et chaînes aléatoires doivent être générés à l'aide du générateur de nombres aléatoires approuvé par les modules cryptographiques

Tous les nombres aléatoires, noms de fichiers aléatoires, GUID aléatoires et chaînes aléatoires doivent être générés à l'aide du générateur de nombres aléatoires approuvé par les modules cryptographiques.

6.5 Les modules cryptographiques utilisés par l'application doivent être conformes à la norme FIPS 140-2 ou à une norme équivalente

Les modules cryptographiques utilisés par l'application doivent être conformes à la norme FIPS 140-2 ou à une norme équivalente.

6.6 Établir et utiliser une politique et un processus sur la façon dont les clés cryptographiques seront gérées

Établir et utiliser une politique et un processus sur la façon dont les clés cryptographiques seront gérées.

GESTION DES ERREURS ET JOURNALISATION

La gestion des erreurs et sa journalisation sont contrôlées par Serenetics.

7.1 Ne pas divulguer d'information sensible dans les réponses aux erreurs, y compris les détails du système, les identifiants de session ou les informations de compte

Ne pas divulguer d'information sensible dans les réponses aux erreurs, y compris les détails du système, les identifiants de session ou les informations de compte.

7.2 Utiliser des gestionnaires d'erreurs qui n'affichent pas d'information de débogage ou de trace de pile

Utiliser des gestionnaires d'erreurs qui n'affichent pas d'information de débogage ou de trace de pile.

7.3 Implémenter des messages d'erreur génériques et utiliser des pages d'erreur personnalisées

Implémenter des messages d'erreur génériques et utiliser des pages d'erreur personnalisées.

7.4 L'application doit gérer les erreurs d'application et ne pas s'appuyer sur la configuration du serveur

L'application doit gérer les erreurs d'application et ne pas s'appuyer sur la configuration du serveur.

7.5 Libérer correctement la mémoire allouée lorsque des conditions d'erreur se produisent

Libérer correctement la mémoire allouée lorsque des conditions d'erreur se produisent.

7.6 La logique de gestion des erreurs associée aux contrôles de sécurité doit refuser l'accès par défaut

La logique de gestion des erreurs associée aux contrôles de sécurité doit refuser l'accès par défaut.

7.7 Tous les contrôles de journalisation doivent être implémentés sur un système fiable

Tous les contrôles de journalisation doivent être implémentés sur un système fiable.

7.8 Les contrôles de journalisation doivent prendre en charge à la fois le succès et l'échec des événements de sécurité spécifiés

Les contrôles de journalisation doivent prendre en charge à la fois le succès et l'échec des événements de sécurité spécifiés.

7.9 S'assurer que les journaux contiennent des données d'événements de journal importantes

S'assurer que les journaux contiennent des données d'événements de journal importantes.

7.10 S'assurer que les entrées de journal qui incluent des données non fiables ne s'exécuteront pas en tant que code dans l'interface ou le logiciel d'affichage des journaux prévu

S'assurer que les entrées de journal qui incluent des données non fiables ne s'exécuteront pas en tant que code dans l'interface ou le logiciel d'affichage des journaux prévu.

7.11 Restreindre l’accès aux journaux aux seules personnes autorisées

Restreindre l’accès aux journaux aux seules personnes autorisées.

7.12 Utiliser une routine centrale pour toutes les opérations de journalisation

Utiliser une routine centrale pour toutes les opérations de journalisation.

7.13 Ne pas stocker d'informations sensibles dans les journaux, y compris les détails inutiles du système, les identifiants de session ou les mots de passe

Ne pas stocker d'informations sensibles dans les journaux, y compris les détails inutiles du système, les identifiants de session ou les mots de passe.

7.14 S'assurer qu'il existe un mécanisme pour effectuer l'analyse des journaux

S'assurer qu'il existe un mécanisme pour effectuer l'analyse des journaux.

7.15 Consigner tous les échecs de validation d'entrée

Consigner tous les échecs de validation d'entrée.

7.16 Enregistrer toutes les tentatives d'authentification, en particulier les échecs

Enregistrer toutes les tentatives d'authentification, en particulier les échecs.

7.17 Enregistrer tous les échecs de contrôle d’accès

Enregistrer tous les échecs de contrôle d’accès.

7.18 Enregistrer tous les événements de falsification apparents, y compris les modifications inattendues des données d'état

Enregistrer tous les événements de falsification apparents, y compris les modifications inattendues des données d'état.

7.19 Consigner les tentatives de connexion avec des jetons de session invalides ou expirés

Consigner les tentatives de connexion avec des jetons de session invalides ou expirés.

7.20 Consigner toutes les exceptions du système

Consigner toutes les exceptions du système.

7.21 Enregistrer toutes les fonctions administratives, y compris les modifications apportées aux paramètres de configuration de sécurité

Enregistrer toutes les fonctions administratives, y compris les modifications apportées aux paramètres de configuration de sécurité.

7.22 Consigner tous les échecs de connexion TLS backend

Consigner tous les échecs de connexion TLS backend.

7.23 Consigner les échecs du module cryptographique

Consigner les échecs du module cryptographique.

7.24 Utiliser une fonction de hachage cryptographique pour valider l'intégrité des entrées de journal

Utiliser une fonction de hachage cryptographique pour valider l'intégrité des entrées de journal.

PROTECTION DES DONNÉES

La protection des données est contrôlée et mise en place par Serenetics.

8.1 Implémenter le moindre privilège et limiter les utilisateurs aux seules fonctionnalités, données et informations système nécessaires à l'exécution de leurs tâches

Implémenter le moindre privilège et limiter les utilisateurs aux seules fonctionnalités, données et informations système nécessaires à l'exécution de leurs tâches.

8.2 Protéger toutes les copies en cache ou temporaires des données sensibles stockées sur le serveur contre tout accès non autorisé et purger ces fichiers de travail temporaires dès qu'ils ne sont plus nécessaires

Protéger toutes les copies en cache ou temporaires des données sensibles stockées sur le serveur contre tout accès non autorisé et purger ces fichiers de travail temporaires dès qu'ils ne sont plus nécessaires.

8.3 Chiffrer les informations stockées hautement sensibles, telles que les données de vérification d'authentification, même si elles se trouvent côté serveur

Chiffrer les informations stockées hautement sensibles, telles que les données de vérification d'authentification, même si elles se trouvent côté serveur.

8.4 Protéger le code source côté serveur contre le téléchargement par un utilisateur

Protéger le code source côté serveur contre le téléchargement par un utilisateur.

8.5 Ne pas stocker les mots de passe, les chaînes de connexion ou autres informations sensibles en texte clair ou de toute manière non cryptographiquement sécurisée du côté client

Ne pas stocker les mots de passe, les chaînes de connexion ou autres informations sensibles en texte clair ou de toute manière non cryptographiquement sécurisée du côté client.

8.6 Supprimer les commentaires dans le code de production accessible à l'utilisateur qui peuvent révéler le système backend ou d'autres informations sensibles

Supprimer les commentaires dans le code de production accessible à l'utilisateur qui peuvent révéler le système backend ou d'autres informations sensibles.

8.7 Supprimer la documentation inutile sur les applications et le système, car cela peut révéler des informations utiles aux attaquants

Supprimer la documentation inutile sur les applications et le système, car cela peut révéler des informations utiles aux attaquants.

8.8 Ne pas inclure d'informations sensibles dans les paramètres de la requête HTTP GET

Ne pas inclure d'informations sensibles dans les paramètres de la requête HTTP GET.

8.9 Désactiver les fonctionnalités de saisie semi-automatique sur les formulaires susceptibles de contenir des informations sensibles, y compris l'authentification

Désactiver les fonctionnalités de saisie semi-automatique sur les formulaires susceptibles de contenir des informations sensibles, y compris l'authentification.

8.10 Désactiver la mise en cache côté client sur les pages contenant des informations sensibles

Désactiver la mise en cache côté client sur les pages contenant des informations sensibles.

8.11 L'application doit prendre en charge la suppression des données sensibles lorsque ces données ne sont plus nécessaires

L'application doit prendre en charge la suppression des données sensibles lorsque ces données ne sont plus nécessaires.

8.12 Mettre en œuvre des contrôles d’accès appropriés pour les données sensibles stockées sur le serveur. Cela inclut les données mises en cache, les fichiers temporaires et les données qui ne devraient être accessibles que par des utilisateurs spécifiques du système

Mettre en œuvre des contrôles d’accès appropriés pour les données sensibles stockées sur le serveur. Cela inclut les données mises en cache, les fichiers temporaires et les données qui ne devraient être accessibles que par des utilisateurs spécifiques du système.

SÉCURITÉ DES COMMUNICATIONS

9.1 Mettre en œuvre le cryptage pour la transmission de toutes les informations sensibles. Cela doit inclure TLS pour protéger la connexion et peut être complété par un cryptage discret des fichiers sensibles ou des connexions non HTTP

Mettre en œuvre le cryptage pour la transmission de toutes les informations sensibles. Cela doit inclure TLS pour protéger la connexion et peut être complété par un cryptage discret des fichiers sensibles ou des connexions non HTTP.

9.2 Les certificats TLS doivent être valides et avoir le nom de domaine correct, ne pas être expirés et être installés avec des certificats intermédiaires si nécessaire

Les certificats TLS doivent être valides et avoir le nom de domaine correct, ne pas être expirés et être installés avec des certificats intermédiaires si nécessaire.

9.3 Les connexions TLS échouées ne doivent pas revenir à une connexion non sécurisée

Les connexions TLS échouées ne doivent pas revenir à une connexion non sécurisée.

9.4 Utiliser les connexions TLS pour tout le contenu nécessitant un accès authentifié et pour toutes les autres informations sensibles

Utiliser les connexions TLS pour tout le contenu nécessitant un accès authentifié et pour toutes les autres informations sensibles.

9.5 Utiliser TLS pour les connexions à des systèmes externes impliquant des informations ou des fonctions sensibles

Utiliser TLS pour les connexions à des systèmes externes impliquant des informations ou des fonctions sensibles.

9.6 Utiliser une seule implémentation TLS standard configurée de manière appropriée

Utiliser une seule implémentation TLS standard configurée de manière appropriée.

9.7 Spécifier les codages de caractères pour toutes les connexions

Spécifier les codages de caractères pour toutes les connexions.

9.8 Filtrer les paramètres contenant des informations sensibles du référent HTTP, lors de la création de liens vers des sites externes

Filtrer les paramètres contenant des informations sensibles du référent HTTP, lors de la création de liens vers des sites externes.

CONFIGURATION DU SYSTÈME

10.1 S'assurer que les serveurs, les frameworks et les composants du système exécutent la dernière version approuvée

S'assurer que les serveurs, les frameworks et les composants du système exécutent la dernière version approuvée.

10.2 S'assurer que les serveurs, les frameworks et les composants du système disposent de tous les correctifs publiés pour la version utilisée

S'assurer que les serveurs, les frameworks et les composants du système disposent de tous les correctifs publiés pour la version utilisée.

10.3 Désactiver les listes d'annuaire

Désactiver les listes d'annuaire

10.4 Restreindre le serveur Web, les comptes de processus et de service au moins de privilèges possible

Restreindre le serveur Web, les comptes de processus et de service au moins de privilèges possible.

10.5 Lorsque des exceptions se produisent, cela doit échouer en toute sécurité

Lorsque des exceptions se produisent, cela doit échouer en toute sécurité.

10.6 Supprimez toutes les fonctionnalités et fichiers inutiles

Supprimez toutes les fonctionnalités et fichiers inutiles.

10.7 Supprimer le code de test ou toute fonctionnalité non destinée à la production, avant le déploiement

Supprimer le code de test ou toute fonctionnalité non destinée à la production, avant le déploiement.

10.8 Empêcher la divulgation de la structure de répertoires dans le fichier robots.txt en plaçant les répertoires non destinés à l'indexation publique dans un répertoire parent isolé

Empêcher la divulgation de la structure de répertoires dans le fichier robots.txt en plaçant les répertoires non destinés à l'indexation publique dans un répertoire parent isolé.

10.9 Définir quelles méthodes HTTP, Get ou Post, l'application prendra en charge et si elles seront gérées différemment dans différentes pages de l'application

Définir quelles méthodes HTTP, Get ou Post, l'application prendra en charge et si elles seront gérées différemment dans différentes pages de l'application.

10.10 Désactiver les méthodes HTTP inutiles

Désactiver les méthodes HTTP inutiles.

10.11 Si le serveur Web gère différentes versions de HTTP, s'assurer qu'elles sont configurées de la même manière et s'assurer que toutes les différences sont comprises

Si le serveur Web gère différentes versions de HTTP, s'assurer qu'elles sont configurées de la même manière et s'assurer que toutes les différences sont comprises.

10.12 Supprimer les informations inutiles des en-têtes de réponse HTTP liées au système d'exploitation, à la version du serveur Web et aux cadres d'application

Supprimer les informations inutiles des en-têtes de réponse HTTP liées au système d'exploitation, à la version du serveur Web et aux cadres d'application.

10.13 Le magasin de configuration de sécurité de l'application doit pouvoir être affiché sous une forme lisible par l'homme pour prendre en charge l'audit

Le magasin de configuration de sécurité de l'application doit pouvoir être affiché sous une forme lisible par l'homme pour prendre en charge l'audit.

10.14 Mettre en œuvre un système de gestion des actifs et y enregistrer les composants du système et les logiciels

10.14 Mettre en œuvre un système de gestion des actifs et y enregistrer les composants du système et les logiciels.

10.15 Isoler les environnements de développement du réseau de production et donner accès uniquement aux groupes de développement et de test autorisés

Isoler les environnements de développement du réseau de production et donner accès uniquement aux groupes de développement et de test autorisés.

10.16 Mettre en œuvre un système de contrôle des modifications logicielles pour gérer et enregistrer les modifications apportées au code à la fois en développement et en production

Mettre en œuvre un système de contrôle des modifications logicielles pour gérer et enregistrer les modifications apportées au code à la fois en développement et en production.

SÉCURITÉ DE LA BASE DE DONNÉES

11.1 Utiliser des requêtes paramètres fortement typées

Utiliser des requêtes paramètres fortement typées.

11.2 Utiliser la validation d’entrée et le codage de sortie et s'assurer de traiter les méta-caractères. Si ceux-ci échouent, n'exécutez pas la commande de base de données

Utilisez la validation d’entrée et le codage de sortie et s'assurer de traiter les méta-caractères. Si ceux-ci échouent, n'exécutez pas la commande de base de données.

11.3 S'assurer que les variables soient fortement typées

S'assurer que les variables soient fortement typées.

11.4 L'application doit utiliser le niveau de privilège le plus bas possible lors de l'accès à la base de données

L'application doit utiliser le niveau de privilège le plus bas possible lors de l'accès à la base de données.

11.5 Utiliser des informations d'identification sécurisées pour accéder à la base de données

Utiliser des informations d'identification sécurisées pour accéder à la base de données.

11.6 Les chaînes de connexion ne doivent pas être codées en dur dans l’application. Les chaînes de connexion doivent être stockées dans un fichier de configuration distinct sur un système approuvé et elles doivent être chiffrées

Les chaînes de connexion ne doivent pas être codées en dur dans l’application. Les chaînes de connexion doivent être stockées dans un fichier de configuration distinct sur un système approuvé et elles doivent être chiffrées.

11.7 Utiliser des procédures stockées pour abstraire l'accès aux données et permettre la suppression des autorisations sur les tables de base de la base de données

Utiliser des procédures stockées pour abstraire l'accès aux données et permettre la suppression des autorisations sur les tables de base de la base de données.

11.8 Fermer la connexion dès que possible

Fermer la connexion dès que possible.

11.9 Supprimer ou modifier tous les mots de passe administratifs de base de données par défaut

Supprimer ou modifier tous les mots de passe administratifs de base de données par défaut.

11.10 Désactiver toutes les fonctionnalités inutiles de la base de données

Désactiver toutes les fonctionnalités inutiles de la base de données.

11.11 Supprimer le contenu inutile du fournisseur par défaut (comme des exemples de schémas)

Supprimer le contenu inutile du fournisseur par défaut (comme des exemples de schémas).

11.12 Désactiver tous les comptes par défaut qui ne sont pas requis pour prendre en charge les exigences de l'entreprise

Désactiver tous les comptes par défaut qui ne sont pas requis pour prendre en charge les exigences de l'entreprise.

11.13 L'application doit se connecter à la base de données avec des informations d'identification différentes pour chaque distinction de confiance (par exemple utilisateur, utilisateur en lecture seule, invité, administrateurs)

L'application doit se connecter à la base de données avec des informations d'identification différentes pour chaque distinction de confiance (par exemple utilisateur, utilisateur en lecture seule, invité, administrateurs).

GESTION DES FICHIERS

12.1 Ne pas transmettre les données fournies par l'utilisateur directement à une fonction d'inclusion dynamique

Ne pas transmettre les données fournies par l'utilisateur directement à une fonction d'inclusion dynamique.

12.2 Exiger une authentification avant d'autoriser le téléchargement d'un fichier

Exiger une authentification avant d'autoriser le téléchargement d'un fichier.

12.3 Limiter le type de fichiers pouvant être téléchargés uniquement aux types nécessaires à des fins commerciales

Limiter le type de fichiers pouvant être téléchargés uniquement aux types nécessaires à des fins commerciales.

12.4 Vérifier que les fichiers téléchargés sont du type attendu en vérifiant les en-têtes de fichiers plutôt que par extension de fichier

Vérifier que les fichiers téléchargés sont du type attendu en vérifiant les en-têtes de fichiers plutôt que par extension de fichier.

12.5 Ne pas enregistrer les fichiers dans le même contexte Web que l'application

Ne pas enregistrer les fichiers dans le même contexte Web que l'application.

12.6 Empêcher ou restreindre le téléchargement de tout fichier pouvant être interprété par le serveur Web

Empêcher ou restreindre le téléchargement de tout fichier pouvant être interprété par le serveur Web.

12.7 Désactiver les privilèges d'exécution sur les répertoires de téléchargement de fichiers

Désactiver les privilèges d'exécution sur les répertoires de téléchargement de fichiers.

12.8 Implémenter le téléchargement sécurisé sous UNIX en montant le répertoire de fichiers ciblé en tant que lecteur logique à l'aide du chemin associé ou de l'environnement chrooté

Implémenter le téléchargement sécurisé sous UNIX en montant le répertoire de fichiers ciblé en tant que lecteur logique à l'aide du chemin associé ou de l'environnement chrooté.

12.9 Lorsque des fichiers existants sont référencés, utiliser une liste verte de noms et de types de fichiers autorisés

Lorsque des fichiers existants sont référencés, utiliser une liste verte de noms et de types de fichiers autorisés.

12.10 Ne pas transmettre les données fournies par l'utilisateur dans une redirection dynamique

Ne pas transmettre les données fournies par l'utilisateur dans une redirection dynamique.

12.11 Ne pas transmettre les chemins de répertoire ou de fichier, utiliser les valeurs d'index mappées à une liste de chemins prédéfinie

Ne pas transmettre les chemins de répertoire ou de fichier, utiliser les valeurs d'index mappées à une liste de chemins prédéfinie.

12.12 Ne jamais envoyer le chemin absolu du fichier au client

Ne jamais envoyez le chemin absolu du fichier au client.

12.13 S'assurer que les fichiers et les ressources de l'application sont en lecture seule

S'assurer que les fichiers et les ressources de l'application sont en lecture seule.

12.14 Analyser les fichiers téléchargés par l'utilisateur à la recherche de virus et de logiciels malveillants

Analyser les fichiers téléchargés par l'utilisateur à la recherche de virus et de logiciels malveillants.

GESTION DE LA MÉMOIRE

13.1 Utiliser des contrôles d'entrée et de sortie pour les données non fiables

Utiliser des contrôles d'entrée et de sortie pour les données non fiables.

13.2 Vérifier que le tampon est aussi grand que spécifié

Vérifier que le tampon est aussi grand que spécifié.

13.3 Lorsque des fonctions qui acceptent un certain nombre d'octets sont utilisées, s'assurer que la terminaison NULL est gérée correctement

Lorsque des fonctions qui acceptent un certain nombre d'octets sont utilisées, s'assurer que la terminaison NULL est gérée correctement.

13.4 Vérifier les limites du tampon si la fonction est appelée dans une boucle et se protéger contre les débordements

Vérifier les limites du tampon si la fonction est appelée dans une boucle et se protéger contre les débordements.

13.5 Tronquer toutes les chaînes d'entrée à une longueur raisonnable avant de les transmettre à d'autres fonctions

Tronquer toutes les chaînes d'entrée à une longueur raisonnable avant de les transmettre à d'autres fonctions.

13.6 Fermer spécifiquement les ressources, ne pas compter sur le garbage collection

Fermer spécifiquement les ressources, ne pas compter sur le garbage collection.

13.7 Utiliser des piles non exécutables lorsqu'elles sont disponibles

Utiliser des piles non exécutables lorsqu'elles sont disponibles.

13.8 Éviter l’utilisation de fonctions vulnérables connues

Éviter l’utilisation de fonctions vulnérables connues.

13.9 Libérer correctement la mémoire allouée à la fin des fonctions et à tous les points de sortie

Libérer correctement la mémoire allouée à la fin des fonctions et à tous les points de sortie.

13.10 Écraser toutes les informations sensibles stockées dans la mémoire allouée à tous les points de sortie de la fonction

Écraser toutes les informations sensibles stockées dans la mémoire allouée à tous les points de sortie de la fonction.

PRATIQUES GÉNÉRALES DU CODAGE

14.1 Utiliser du code managé testé et approuvé plutôt que de créer du nouveau code non managé pour les tâches courantes

Utiliser du code managé testé et approuvé plutôt que de créer du nouveau code non managé pour les tâches courantes.

14.2 Utiliser des API intégrées spécifiques à des tâches pour effectuer des tâches du système d'exploitation. Ne pas permettre à l'application d'émettre des commandes directement au système d'exploitation, notamment via l'utilisation d'interpréteur de commande lancés par l'application

Utiliser des API intégrées spécifiques à des tâches pour effectuer des tâches du système d'exploitation. Ne pas permettre à l'application d'émettre des commandes directement au système d'exploitation, notamment via l'utilisation d'interpréteur de commande lancés par l'application.

14.3 Utiliser des sommes de contrôle ou des hachages pour vérifier l'intégrité du code interprété, des bibliothèques, des exécutables et des fichiers de configuration

Utiliser des sommes de contrôle ou des hachages pour vérifier l'intégrité du code interprété, des bibliothèques, des exécutables et des fichiers de configuration.

14.4 Utiliser le verrouillage pour empêcher plusieurs requêtes simultanées ou utiliser un mécanisme de synchronisation pour éviter les conditions de concurrence

Utiliser le verrouillage pour empêcher plusieurs requêtes simultanées ou utiliser un mécanisme de synchronisation pour éviter les conditions de concurrence.

14.5 Protéger les variables et les ressources partagées contre les accès simultanés inappropriés

Protéger les variables et les ressources partagées contre les accès simultanés inappropriés.

14.6 Initialiser explicitement toutes vos variables et autres magasins de données, soit lors de la déclaration, soit juste avant la première utilisation

Initialiser explicitement toutes vos variables et autres magasins de données, soit lors de la déclaration, soit juste avant la première utilisation.

14.7 Dans les cas où l'application doit s'exécuter avec des privilèges élevés, augmenter les privilèges le plus tard possible et les supprimer dès que possible

Dans les cas où l'application doit s'exécuter avec des privilèges élevés, augmenter les privilèges le plus tard possible et les supprimer dès que possible.

14.8 Éviter les erreurs de calcul en comprenant la représentation sous-jacente de votre langage de programmation

Éviter les erreurs de calcul en comprenant la représentation sous-jacente de votre langage de programmation.

14.9 Ne pas transmettre les données fournies par l'utilisateur à une fonction d'exécution dynamique

Ne pas transmettre les données fournies par l'utilisateur à une fonction d'exécution dynamique.

14.10 Empêcher les utilisateurs de générer du nouveau code ou de modifier le code existant

Empêcher les utilisateurs de générer du nouveau code ou de modifier le code existant.

14.11 Examiner toutes les applications secondaires, le code tiers et les bibliothèques pour déterminer la nécessité commerciale et valider la fonctionnalité sécurisée

Examiner toutes les applications secondaires, le code tiers et les bibliothèques pour déterminer la nécessité commerciale et valider la fonctionnalité sécurisée.

14.12 Mettre en œuvre une mise à jour sécurisée à l’aide de canaux cryptés

Mettre en œuvre une mise à jour sécurisée à l’aide de canaux cryptés.

Dernière mise à jour