Comment assurer la sécurité du développement, gagner du temps et des nerfs

La transition vers le segment numérique des banques, de la vente au détail, de la médecine et d'autres branches vitales de la production et des services a provoqué de nombreuses menaces pour la sécurité. Aujourd'hui, dans le monde entier, l'activité des attaquants continue de croître et les problèmes de protection des données des utilisateurs et des entreprises contre le vol et les dommages intentionnels font de plus en plus l'objet de discussions entre professionnels.

Comment est-il juste pour les entreprises et l'informatique d'intégrer la sécurité dans le processus de développement, quels outils sont les mieux utilisés pour cela, comment tout cela dépend-il de la pratique de mise en œuvre réelle. Nous partageons les approches de Rostelecom, M. Video-Eldorado, DD Planet, AGIMA.

Yaroslav Aleksandrov, responsable du développement, Solar appScreener à Rostelecom, sur la façon d'intégrer SAST dans le développement


Avec la croissance de l'entreprise et l'augmentation du nombre de développeurs, il devient de plus en plus difficile de vérifier «manuellement» les vulnérabilités d'un produit. Vous devez utiliser SAST - test de sécurité d'application statique (Static Application Security Testing). Dans Solar appScreener, la sécurité des informations repose sur un produit interne. Le produit analyse le code source. Aujourd'hui, 26 langages de programmation sont pris en charge, dont la source peut être analysée vulnérabilité, et prend en charge tous les formats populaires et les systèmes de gestion de projet.

Comment choisir SAST?


Même une simple vulnérabilité ne peut être trouvée en utilisant des algorithmes primitifs. Aujourd'hui, sur le marché, il existe de nombreuses solutions SAST, payantes et gratuites. Les plus populaires d'entre eux sont AppScan d'IBM Security, Synopsys, Veracode, Application Inspector, Micro Focus, Appercut, Checkmarks.

L'efficacité du processus de développement dépend du choix de l'outil. Les principaux avantages des solutions payantes:

  • Focus sur la sĂ©curitĂ©: algorithmes spĂ©cifiques et grandes bases de règles.
  • Prise en charge de nombreux langages de programmation.
  • Interface conviviale.
  • DisponibilitĂ© des plugins et API.
  • DisponibilitĂ© du support technique pour l'outil.

Les outils gratuits et les interfaces Web sont souvent inférieurs aux outils payants, car ils contiennent des algorithmes plus simples et les bases de règles sont moins complètes. Leur tâche principale est de trouver des erreurs dans le code. La spécialisation et la fonctionnalité de ces solutions sont généralement très étroites.

Une fois la solution SAST sélectionnée, vous devez l'intégrer dans le processus de développement. Les options d'intégration peuvent inclure: l'intégration de l'outil dans le référentiel, les environnements de développement, les serveurs CI / CD, les systèmes de suivi des tâches. Un bon outil peut s'intégrer avec succès dans toutes les classes de systèmes répertoriés.

Remarque : l'API SAST ouverte comprend l'API JSON et la CLI et offre de nombreuses possibilités d'intégration et d'automatisation supplémentaires.

Pour choisir l'outil qui correspond le mieux aux buts et objectifs du développeur, vous devez effectuer leur comparaison fonctionnelle et leur comparaison de qualité.

Une comparaison fonctionnelle est effectuée selon plusieurs paramètres: ils analysent la commodité de l'interface et la commodité d'intégration avec leurs propres outils. Dans le même temps, il est important d'effectuer une vérification sur vos propres codes.

L'étape suivante est une comparaison de qualité: ils analysent les vulnérabilités et les faux positifs par rapport à leur propre code.

Les nuances et subtilités de l'analyse de code


Plus une vulnérabilité est détectée tôt, moins elle coûte cher au développeur et au client. Cela signifie que le produit doit être vérifié périodiquement pour détecter les vulnérabilités au cours du processus de développement et effectuer en outre des vérifications de contrôle avant sa sortie.

Rapidité et ressources : on s'attend généralement à ce que l'outil fonctionne rapidement; courir à chaque changement; montrer à la volée qui et quand a introduit la vulnérabilité. En fait, SAST analyse le code pendant au moins 8 heures, il est difficile de l'exécuter à chaque changement; Il est difficile d'identifier l'auteur de la vulnérabilité de faux positifs se produisent. Donc, la question se pose: comment configurer DevSecOps.

C'est très important ici:

  • Calculez le temps et les ressources pour analyser votre code.
  • Identifiez les dĂ©clencheurs pour dĂ©clencher une analyse en fonction des rĂ©sultats.
  • Gardez Ă  l'esprit que la puissance devra ĂŞtre recalculĂ©e pĂ©riodiquement.
  • Il est prĂ©fĂ©rable d'utiliser l'analyse incrĂ©mentielle, mais cela doit ĂŞtre fait avec prudence, car les vulnĂ©rabilitĂ©s peuvent ĂŞtre perdues.



Par exemple, vous pouvez exécuter des tests à l'aide de SAST lorsqu'un développeur soumet une tâche pour examen. Vous pouvez également lancer la numérisation à la fin de la journée de travail.


Un autre problème est les faux positifs et l'obtention d'informations sur plusieurs vulnérabilités dans le rapport. Dans ce cas, le développeur est recommandé: filtrer dans les analyseurs statiques par vulnérabilité et par fichier. Vous pouvez exclure des bibliothèques, analyser la criticité, ajouter des exceptions pour certains paramètres. Il suffit de faire un tel travail une seule fois, pour qu'à l'avenir, les informations sur les faux positifs ne tombent pas dans les rapports. Il est également important de s'assurer qu'aucune nouvelle vulnérabilité n'apparaît et de démonter progressivement la base de données de vulnérabilités existante en arrière-plan.

Lorsque vous travaillez sur l'intégration de SAST dans le processus de développement, il est important de mettre en œuvre les processus progressivement sans bloquer la version. Le déroulement du processus peut être le suivant:

  • SĂ©lection d'outils.
  • Description du processus (crĂ©ation d'un règlement).
  • Description des solutions techniques.
  • Travaux de mise en Ĺ“uvre.
  • OpĂ©ration d'essai.

Il vaut mieux commencer par les systèmes les plus critiques: il est important d'éliminer les nouvelles vulnérabilités, de conduire la conception, de mettre en œuvre les réglementations et les solutions techniques.

Le règlement doit obligatoirement indiquer:

  • Étapes pour vĂ©rifier le code pour les vulnĂ©rabilitĂ©s.
  • Responsable du dĂ©marrage de l'analyse.
  • RĂ´les et rĂ©sultats.
  • Comment sera Ă©tabli le processus de communication.
  • Accord de niveau de service.
  • Responsable du contrĂ´le des processus.
  • L'ordre d'ajout de nouveaux systèmes au processus.

Cette approche permet la mise en œuvre de SAST dans le processus de développement en une année civile. Il est important de considérer tous les changements et risques.

Recommandations finales:

  • Utilisez SAST Ă  chaque Ă©tape du dĂ©veloppement.
  • Adaptez l'intĂ©gration Ă  votre code et Ă  votre processus.
  • Commencez par corriger de nouvelles vulnĂ©rabilitĂ©s.
  • Éliminez progressivement les anciennes vulnĂ©rabilitĂ©s.
  • CrĂ©ez un processus basĂ© sur SAST.
  • DĂ©ployez progressivement, en commençant sans impact sur les versions.

Vladimir Sadovsky, chef de l'équipe de surveillance et de réponse aux incidents de sécurité de l'information de M.Video-Eldorado, sur la façon de construire un processus de programmation sécurisé


L'idée de base derrière le concept de programmation sécurisée se résume à aider l'entreprise; accélérer les processus; minimiser les risques de problèmes liés aux vulnérabilités du produit.

L'approche classique de la sécurité peut être visualisée comme suit:



Son principal problème est lié au coût élevé des améliorations nécessaires pour assurer la sécurité. De plus, il est important de fournir des protocoles de chiffrement des données, le chiffrement du protocole de transfert des bus d'intégration, etc.

Quant aux sites de commerce électronique, ils sont attaqués plus souvent que beaucoup d'autres. Les objectifs de telles attaques sont une tentative d'obtenir un certain avantage financier (pour tromper le programme et acheter des produits coûteux gratuitement), ou pour saisir les données personnelles des clients. Malheureusement, certains problèmes ne peuvent pas être résolus à l'aide des scanners de vulnérabilité classiques. Par exemple, si l'application dispose d'un scanner d'autorisation d'empreintes digitales, pas une seule analyse statique ne montrera l'inexactitude de ces fonctionnalités dans l'application. Cela augmente le risque d'incidents liés à la pénétration d'intrus dans les comptes utilisateurs de l'application. Dans le même temps, plus l'application du détaillant est proche de la version, plus il sera coûteux de corriger les vulnérabilités et les bogues.

Le schéma d'utilisation des outils de test de sécurité du code pour la plate-forme de commerce électronique peut se présenter comme suit:



Il montre clairement quelle équipe a été impliquée dans la mise en œuvre d'une fonctionnalité d'application particulière. Si une erreur ou une vulnérabilité est détectée, la fonctionnalité visera à finaliser cette équipe particulière. En conséquence, le temps consacré à la correction des bogues et des problèmes est réduit, car les développeurs directs connaissent mieux leur code.

Ensuite, le test final est lancé, au cours duquel tout le code du produit final est analysé et «nettoyé» les bogues résiduels.

Menaces de sécurité pour la vente au détail


Le principal moteur du commerce de détail est la vente - qu'il s'agisse de magasins hors ligne, d'Internet, du marketing, des bases de données clients. Tout vise à se rapprocher le plus possible de l'utilisateur. De plus, le commerce de détail moderne cherche à vendre ses produits en utilisant l'omnicanal; Lance diverses campagnes et programmes marketing. Tout cela intéresse non seulement les consommateurs, mais aussi les intrus. Une évaluation supplémentaire de la sécurité apparaît ici - dommages potentiels. L'analyse est conçue pour identifier les bogues sur le site, les erreurs logiques et les problèmes de sécurité classiques dont les vrais consommateurs souffrent par la suite.

Il est également important de comprendre que les dommages potentiels commencent avec la phase de test. Il arrive que l'environnement dans lequel il est produit soit profondément intégré au productif, de sorte que les modifications apportées pendant la phase de test peuvent provoquer des incidents et des problèmes. Pour éviter cela, il est important de développer une carte de processus et de prendre les mesures appropriées avant le début du développement.

Si un entrepreneur externe est impliqué dans le développement, il est important d'évaluer s'il est en mesure de répondre aux exigences de sécurité nécessaires. Pour cela, il est nécessaire de procéder à des évaluations régulières de la compétence des développeurs et du niveau de l'entreprise exécutante en matière de sécurité Internet. Le contrat devrait inclure des points pour la certification des développeurs; enregistrer qui est responsable des erreurs qui ont causé des dommages. Il est important de former régulièrement des équipes de développement et d'assurer une protection complète de la propriété intellectuelle.

Il est également très important de fournir un contrôle d'accès, d'organiser un environnement de confiance et de configurer des outils de surveillance et de prévention des fuites de données. Nous devrons également formuler des exigences et des politiques détaillées pour une programmation sûre, corriger toutes les versions de l'Open Source et des bibliothèques externes.

Au stade de la conception, il est logique d'utiliser une approche de scénario, de construire un modèle de menace et de mener une analyse des risques à plusieurs étapes. Lorsqu'une nouvelle tâche revient aux développeurs, il est important de comprendre quels processus métier elle affectera et d'évaluer les initiatives en termes de scénarios de fraude possibles au niveau des exigences métier. Chaque risque est considéré dans le cadre de trois probabilités: évaluation optimiste, moyenne et pessimiste. Les bots sont envoyés sur le site ou l'application. Un dixième d'entre eux est malveillant. Sur la base de trois scénarios, les dommages potentiels à l'entreprise sont calculés.

Il existe différents analyseurs statiques et dynamiques qui vous permettent d'identifier les problèmes et de les résoudre à temps. La tâche du service informatique est de vérifier que la chaîne de code fonctionne correctement du point de vue des exigences techniques. La tâche du service de sécurité est de vérifier le code pour les failles de sécurité.

La recherche de vulnérabilités de sécurité dans la logique métier se résume aux aspects suivants:

  • ImplĂ©mentation d'autotests de sĂ©curitĂ© lors du test des applications.
  • CrĂ©ation de règles de costume pour un analyseur statique en rĂ©fĂ©rence aux processus mĂ©tier et aux intĂ©grations critiques.
  • Analyse manuelle de parties du code modifiĂ©, dans le cadre d'une fonctionnalitĂ© Ă  forte criticitĂ© basĂ©e sur les risques.
  • Processus de recherche de signets dans le code, audit pĂ©riodique des bibliothèques externes.

Tous les problèmes de sécurité ne peuvent pas être trouvés éliminés au niveau du code et du développement. La tâche du service de sécurité est de construire et d'établir un processus efficace de gestion des vulnérabilités et des incidents. Pour ce faire, vous devez constamment analyser le comportement des utilisateurs, les profiler, surveiller le comportement. Si elle s'écarte des modèles commerciaux habituels, vous devez considérer cela comme un incident et réagir immédiatement.
L'analyse du comportement des utilisateurs permet:

  • Travailler avec le Big Data et construire des modèles de comportement et d'anomalies anormaux.
  • Processus de surveillance et d'audit des scripts JS. Les sites modernes ne fonctionnent pas sans scripts JS. Ils sont souvent chargĂ©s Ă  partir de ressources externes. Par consĂ©quent, il est important de comprendre leurs fonctionnalitĂ©s et le type de menace que reprĂ©sentent les scripts JS pour le site.
  • Recherchez les vulnĂ©rabilitĂ©s basĂ©es sur les services d'analyse et les mĂ©triques Google et Yandex.
  • Tests de sĂ©curitĂ© rĂ©guliers du projet dans son ensemble.
  • Utilisation de Bug Bounty pour identifier de nouvelles vulnĂ©rabilitĂ©s.
  • IntĂ©gration WAF pour protĂ©ger les applications et rĂ©pondre efficacement aux problèmes.

Il est important de collecter et d'analyser en permanence des données pour identifier de nouveaux cas anormaux.

Dmitry Nikulchev, DD Planet - sur la façon de protéger les données des utilisateurs des services Web et mobiles


La programmation sécurisée dans DD Planet est basée sur plusieurs principes. Le premier d'entre eux est la fiabilité. Les performances du produit doivent être prévisibles, correctes et sans problème. Même si les données initiales ont été saisies incorrectement (accidentellement ou intentionnellement dans le cadre d'une attaque contre un produit).

Le second est la sécurité. La capacité de protéger contre les menaces externes, les attaques et de maintenir l'opérabilité après leur réflexion et leur élimination.

Le troisième est la confidentialité. Assurer un travail sûr et correct avec les données personnelles. Ceci est essentiel lors du développement d'applications d'entreprise et personnalisées.

Par exemple, le service Zhivu.RF, développé et soutenu par DD Planet, est un réseau social privé pour les voisins et contient beaucoup de données personnelles. Le profil utilisateur est confirmé à l'aide des services publics, et appartenant à une adresse spécifique (quartier) - extraire USRN de Rosreestra. Cela impose au développeur de sérieuses obligations liées à la protection des informations personnelles.

Stockage et traitement des données utilisateur


Nous stockons toutes les données personnelles dans ISPDn (Personal Data Information System). Ils sont contenus dans un réseau virtuel isolé avec une infrastructure informatique sécurisée. Des outils de détection d'intrusion, un serveur d'analyse de sécurité et de recherche de vulnérabilités, ainsi qu'un serveur de sauvegarde sont intégrés au réseau virtuel.

Pour identifier les vulnérabilités, nous utilisons «l'approche manuelle» et nous appuyons sur une analyse experte. Ce principe n'implique pas l'utilisation d'outils automatisés: la recherche est effectuée par un spécialiste expérimenté, et lors de l'identification des vulnérabilités, il se concentre sur ses propres connaissances. Il est clair que cette technique demande beaucoup de temps et nécessite la présence de spécialistes hautement qualifiés dans l'entreprise. Cependant, il est considéré comme le plus efficace en termes d'exactitude et d'exhaustivité de la couverture des données lors de la vérification.

Gravité dans la lutte pour le produit parfait


Dans le développement client, il est important de réaliser les versions à temps, tandis que l'application doit être sans bug et garantir la sécurité des utilisateurs. Suivant ce principe, lors des tests de produits, nous utilisons le principe de l'évaluation des tâches par priorité - Gravité. Autrement dit, nous classons toutes les tâches pour éliminer les bogues en fonction du degré d'impact négatif sur le produit du défaut.

La priorité dans la résolution des bogues dans DD Planet est la suivante:

  1. Tout d'abord, nous identifions et éliminons les bloqueurs ou les erreurs dans lesquels l'utilisateur n'a pas la possibilité d'effectuer l'action cible. Par exemple, un visiteur ne peut pas s'inscrire sur le site ou dans l'application; connectez-vous à votre compte; Accédez aux données ou sections cibles de l'application.
  2. Ensuite, nous suivons et éliminons les bogues critiques - problèmes de sécurité, blocages du système, processus opérationnel défectueux et plantages d'application périodiques.
  3. Ensuite, nous analysons les problèmes du niveau moyen - nous trouvons des erreurs qui n'apparaissent que dans certaines situations spécifiques.
  4. La dernière étape consiste en des changements mineurs - nous nous débarrassons des bogues mineurs, élaborons des commentaires sur l'interface, etc.

Cette séquence nous aide à nous débarrasser rapidement des bogues, en se concentrant sur les aspects clés pour l'utilisateur.

La sortie du produit se déroule en plusieurs étapes. Tout d'abord, il est publié sur un environnement de test pour identifier les bugs. Ensuite, il y a une correction de bogues des priorités avec le niveau de gravité 1 et 2. Après cela, nous faisons une version pour la production. Pendant un certain temps après la sortie, une partie de l'équipe est engagée dans la correction de bogues avec une priorité de 3 et 4. Quelques jours plus tard, il y a une autre mise à jour de prod après la résolution des problèmes restants.

Pour assurer une sécurité maximale du produit:

  • Utilisez des requĂŞtes paramĂ©trĂ©es dans la base de donnĂ©es.
  • DĂ©barrassez-vous de la construction des requĂŞtes Ă  l'intĂ©rieur de l'application pour Ă©viter les injections SQL.
  • Connectez-vous Ă  la base de donnĂ©es uniquement sous un compte filaire spĂ©cial avec le minimum de droits nĂ©cessaires.
  • Gardez rĂ©gulièrement des journaux de sĂ©curitĂ©.

Ne faites pas confiance à l'entrée utilisateur: toutes les données du client (utilisateur) doivent être vérifiées sur le serveur. Cela empêchera le passage de scripts ou de codes hexadécimaux malveillants. Les données utilisateur sont souvent transmises en tant que paramètres pour appeler un autre code sur le serveur et, si elles ne sont pas vérifiées, peuvent sérieusement compromettre la sécurité du système. C'est pourquoi il est si important de vérifier strictement l'exactitude de toutes les données d'entrée.

Andrey Ryzhkin et Alexey Klinov d'AGIMA - sur comment et pourquoi contrôler la sécurité des applications dans le développement personnalisé


La sécurité de l'architecture numérique de tout produit est un attribut essentiel pour les entreprises et les utilisateurs. Il s'agit d'un indicateur supplémentaire de qualité et de fiabilité, qui doit être maintenu à toutes les étapes de la production et du fonctionnement de l'application.

Toute organisation dispose d'informations précieuses, notamment:

  • DonnĂ©es personnelles des employĂ©s et clients.
  • AccĂ©der aux donnĂ©es de la banque cliente.
  • DonnĂ©es clients de l'entreprise.
  • Dessins de production.
  • Documentation du projet.
  • Et d'autres

Ces données sont localisées dans différents systèmes et leur sécurité est assez difficile à contrôler. Et le vol ou la fausse représentation de ces informations entraîne des pertes financières majeures, une diminution de la réputation de l’organisation, la perte de clients et partenaires clés et une interruption des transactions et des projets.

Mais néanmoins, il existe de nombreux outils de protection de l'information sur le marché:



et il est tout à fait possible d'organiser une bonne protection globale - il y aurait une volonté et des moyens.

Et la sécurité des applications?


Une entreprise a besoin d'une application fonctionnelle et stable avec des fonctionnalités efficaces qui peuvent apporter des retours financiers. Mais quelle que soit l'idéal de l'application en termes de fonctionnalités, elle peut avoir des artefacts liés à des vulnérabilités. Habituellement, ils n'y pensent pas, car ces artefacts ne se manifestent pas avant un certain moment - jusqu'à ce que les concurrents ou un pirate curieux en aient besoin. Les vulnérabilités peuvent être exploitées dans le but de tenter d'infiltrer l'infrastructure d'une organisation via un site Web ou une application ou d'accéder à des données précieuses que cette application traite ou stocke. En conséquence, l'entreprise pourrait être sérieusement affectée.

Malheureusement, l'analyse de sécurité est encore rare pour un développement personnalisé. La raison en est l'unicité des projets. Ils sont tous trop différents et chacun a ses propres besoins. Cela affecte le coût de l'analyse. Compte tenu de la faible marge de l'entreprise, la mise en route du processus dans le développement personnalisé n'est pas toujours possible. Néanmoins, il vaut mieux ne pas négliger le processus.

Comment empêcher le vol de données de l'application?


Dès le début du développement d'une application mobile ou web, il est logique d'introduire une analyse du code produit pour la sécurité.

Vous ne pouvez pas compter uniquement sur WAF (pare-feu) en termes de protection: la règle peut ne pas fonctionner, une configuration incorrecte ou des signatures obsolètes peuvent être utilisées. Seule une série de mesures: l'utilisation de l'analyse statique du code source pendant le processus de développement, l'analyse instrumentale dans un environnement de combat, le stylo-test, le WAF et la protection contre les DDoS contribueront à garantir un niveau élevé de sécurité des applications.
Les scanners instrumentaux et pen-test détecteront les vulnérabilités qui n'ont pas pu être identifiées en analysant le code pendant le développement.

Comment organiser le processus de test des vulnérabilités?


AGIMA met en œuvre plusieurs approches pour l'analyse du code de sécurité:

  • IntĂ©gration complète lors du dĂ©veloppement de CI / CD.
  • Audit de sĂ©curitĂ© aux points de contrĂ´le.
  • Audit de sĂ©curitĂ© ponctuel ou ponctuel.

L'option idéale est d'intégrer l'analyse de sécurité dans le processus de développement. Cette approche est particulièrement pertinente pour les projets que le même développeur développe depuis longtemps.

La deuxième option est un audit de sécurité aux points de contrôle. Cette méthode convient si le produit présente des rejets rares et peut également être un excellent ajout à l'analyse intégrée.

Il est logique d'appliquer un audit situationnel ou ponctuel si le projet est assez simple ou s'il a été transféré d'un autre développeur. Dans le deuxième cas, il est important de déterminer la dette technique du produit - le nombre de bogues et de vulnérabilités existants. Après cela, vous devez créer une feuille de route pour les éliminer. Parfois, tout peut être réparé dans la première étape. S'il y a beaucoup de problèmes, vous devrez les traiter dans le processus de développement ultérieur. Éliminez d'abord les plus critiques, puis les moins dangereux.

L'approche, combinée aux trois versions énumérées ci-dessus, vous permet de: réduire le nombre de vulnérabilités potentielles sur la version, minimiser la dette technique du produit et réduire le temps de vente de l'application au prod.

Le résultat d'une analyse de sécurité mise en œuvre aux premiers stades de développement est:

  • , .
  • .
  • .


Au lieu d'une conclusion


Aujourd'hui, la recherche de vulnérabilités dans les produits logiciels, les applications mobiles et Web devient un domaine d'activité important pour tous les principaux développeurs. Certains considèrent l'analyse de vulnérabilité d'experts comme fiable et font confiance aux tests effectués par des spécialistes internes. D'autres utilisent des tests de plume, des scanners de vulnérabilité et des analyseurs de code. D'autres encore intègrent des outils SAST dans le processus de développement. Dans ce cas, avant de commencer les travaux, il est recommandé de construire des modèles de menace et d'analyser les risques potentiels associés au vol et à la distorsion des données critiques.

Ne vous fiez pas uniquement au pare-feu et aux fonctionnalités de sécurité gratuites. Le moyen le plus fiable est d'utiliser une approche intégrée, de vérifier régulièrement et minutieusement le code pour les bogues et les vulnérabilités.

Source: https://habr.com/ru/post/fr460669/


All Articles