Sélectionner une page


Rencontrez Alice et Bob

Alice et Bob travaillent pour une start-up d’analyse de données passionnante qui perturbe le domaine technologique des soins de formation Divi. Vous avez peut-être entendu leurs noms tels qu’ils sont connus dans l’industrie de la sécurité pour la création d’applications sûr grâce à la conception. En tant que développeurs, ils aiment également transformer rapidement les idées en applications fonctionnelles qui présentent des idées innovantes et des solutions possibles aux problèmes des clients.

Créons une application
Créons une application

«Construisons-en un Application pour carte de vaccination! »Expliqua Alice lors de l’une de ces réunions Zoom récurrentes.
«Vous savez aussi ce que j’en ai pensé. Faisons ça! »Dit Bob, alors qu’il se dispersait à la hâte.
«Nous pouvons impliquer Claire aussi notre nouveau DevSecOps Personne parce qu’il est préférable d’intégrer la sécurité dans le produit dès le départ », a déclaré Alice.

Bob a demandé: « Cela ne nous ralentira-t-il pas, Alice?? Pouvons-nous d’abord créer l’application pour voir s’il y a des téléchargements à partir de l’AppStore, puis mettre en œuvre des fonctionnalités de sécurité au cours du mois prochain? « 
Avant qu’Alice ne puisse répondre, Bob répondit rapidement: «Je plaisante! Bien entendu, la sécurité et la confidentialité de nos utilisateurs sont plus importantes que la rapidité et le temps de démarrage. « 

Claire assiste maintenant à la réunion Zoom.

Discutez avec les développeurs

Claire, l'AppSec, rejoint Alice et Bob
Claire, l’AppSec, rejoint Alice et Bob

« OMG, ça va être une application super cool! » Claire a dit avant qu’Alice et Bob ne puissent même décrire leur idée d’application. La réunion ennuyeuse de Zoom s’est soudainement transformée en une discussion de conception entre les développeurs (Alice et Bob) et l’agent de sécurité (Claire). Claire demande d’abord des informations de base sur l’application et prend des notes pour référence future.

  • Équipe: Qui sont les développeurs, les DevOps et les propriétaires de produits?
  • Histoires d’utilisateurs: Existe-t-il déjà des user stories qui offrent un aperçu de l’application?
  • La technologie: Quelle est la pile applicative et technologique cloud?
  • Architecture: Y a-t-il des graphiques même au dos des serviettes?

recueillir des informations Avoir des discussions formelles et informelles avec les développeurs est une compétence essentielle pour réussir dans un AppSec ou DevSecOps et même dans un rôle de cybersécurité. Une bonne connaissance de l’application aidera à construire une relation non seulement avec l’équipe de développement mais aussi avec les outils de test de sécurité (y compris le fournisseur). Un outil de sécurité bien configuré basé sur une analyse statique améliorerait à la fois la productivité des développeurs et la sécurité des applications.

Démarrez l’application

Notre application de pass de vaccination aura un backend Go Micro Services et une application frontale d’une seule page (SPA) React. Ceci est suivi d’une application mobile native pour Android et iOS qui a été créée avec React Native Framework.

Architecture d'application: passez aux microservices avec l'interface React
Architecture d’application: passez aux microservices avec le front-end React

Après avoir lu mon blog DevSecOps avec GitHubClaire suggère que l’équipe intègre ShiftLeft NG SAST dans le flux de travail de leur dépôt GitHub dès le début. Alice et Bob sont bien sûr sceptiques. Après tout, l’application que vous pensez être nouvelle est nouvelle, et donc toute analyse de sécurité automatisée conduit inévitablement à de faux positifs et des heures de test, n’est-ce pas?

Avec ces retours des développeurs, Claire planifie ses devoirs. Elle parcourt les pages de documentation pour marche et réagir sur ShiftLeft pendant le week-end. Elle décide d’ajuster la valeur par défaut Commande d’analyse Utilisé par ShiftLeft en ajoutant des balises personnalisées.

# Default command
sl analyze --js --app passport-fe .
sl analyze --go --app passport-backend .
# Claire’s command
sl analyze --js --app passport-fe
--tag app.group=alice-team
--tag stage=poc
--tag threat_model_id=page-100
--tag classification=sensitive
--tag branch=${GITHUB_REF}
.

sl analyze --go --app passport-backend
--tag app.group=alice-team
--tag stage=poc
--tag threat_model_id=page-101
--tag classification=sensitive
--tag branch=${GITHUB_REF}
.

Les balises personnalisées supplémentaires ajoutées par Claire sont basées sur les notes de la session de collecte d’informations avec les développeurs. Ces balises peuvent être n’importe quelle paire clé-valeur et sont complètement facultatives. Dans cet exemple particulier, les balises suivantes sont utilisées.

  • Étape = poc – Cela aiderait à décider de la criticité commerciale de cette application en cas d’incident pouvant entraîner des temps d’arrêt
  • Threatening_Model_ID = Page-100 – C’est l’ID des pages wiki qui conservent les notes et les diagrammes d’architecture partagés par les développeurs
  • Classification = sensible– Même si l’application est dans un état POC, les utilisateurs partagent leurs informations médicales, vaccinales et personnelles afin que les données soient confidentielles. Ce jour-là, Claire peut vérifier et s’assurer que l’application est toujours en place pour empêcher les données sensibles d’entrer dans le cloud ou dans les journaux
  • branche = $ {GITHUB_REF}– En affectant la branche Git comme nom de branche, des rapports séparés peuvent être conservés pour chaque branche et sa pull request.

Avec ce flux de travail GitHub, y compris ShiftLeft NG SAST, l’équipe décide de se rencontrer sur le zoom pour discuter des données qui seront collectées et stockées par l’application.

Collecter un dictionnaire de données

Chaque application utilise différents termes et noms de variables dans le code pour représenter les données. Une variable appelée «client» ou «patient» peut contenir des informations sensibles qui doivent être conservées en sécurité et privées, tandis qu’une variable appelée «tmpCounter» est généralement sûre.

L’application de vaccination collecterait les données suivantes auprès des utilisateurs:

  • Client:Informations personnelles telles que le nom, l’adresse et l’emplacement
  • Dates de vaccination:Date, lieu et type de Divi reçu par le client. Une photo du Divi et une copie de la lettre de confirmation seront également téléchargées et enregistrées via l’application

Le backend prend en charge les fonctions suivantes via son API:

  • Stocker et récupérer les informations client
  • Télécharger des photos et des registres de vaccination dans un bucket AWS s3
  • Générer une confirmation et une référence unique pour qu’une autorité de confiance interroge et confirme le statut vaccinal

L’équipe convient que les données seraient toujours crypté à la fois au repos et pendant le transport. En outre, ils ne consignaient jamais d’informations sensibles dans les fichiers journaux, mais conservaient à la place un journal d’audit générique pour suivre l’utilisation de tous les appels d’API susceptibles d’obtenir des informations sensibles. En résumé, Cryptez toujours, ne consignez pas, mais vérifiez.

Configurer le dictionnaire de données SAST

Claire sait parfaitement qu’Alice et Bob s’en tiendraient à leurs mots et utiliseraient toujours le cryptage pour les données et l’obscurcissement pour les journaux. Mais les régulateurs et les comptables exigent malheureusement une preuve de conformité et ne peuvent pas simplement prendre la parole d’une personne pour une assurance. Même les meilleurs développeurs font parfois des erreurs. Il est donc préférable de configurer un outil capable de suivre l’utilisation des données sensibles pour une tranquillité d’esprit.

J’ai trouvé la page de documentation pour Personnalisation des données confidentielles Claire apprend que si ShiftLeft a une large collection de termes dans le dictionnaire standard, il ne contient pas de termes comme Covid ou Divi, etc. Elle décide donc d’ajouter des termes spécifiques à l’application au dictionnaire standard à l’aide d’un fichier de stratégie.

IMPORT io.shiftleft/defaultdict
DATA highlySensitive = VAR vaccine, covid, clinic, dosage
DATA pii = VAR vaccine photo, evidence image, clinic location, vaccination date

L’extrait ci-dessus est enregistré dans un fichier appelé passeport.policy. Avec le sl Commande de stratégie Claire ajoute cette nouvelle politique à ShiftLeft, qui comprend un nouveau dictionnaire de données.

sl policy push passportrules passport.policy
sl policy assignment set --project passport-backend <ShiftLeft Org Id>/passportrules:latest

Test de développement itérer

Avec l’intégration ShiftLeft et le dictionnaire de données correct, l’analyse NG SAST s’exécutera automatiquement lorsque Alice ou Bob en créeront un Demande de tirage. Tout d’abord, ils choisissent de ne pas utiliser ShiftLeft comme vérification de l’état requise car ils ne veulent pas que leurs fusions soient encore bloquées par un outil SAST. La bonne nouvelle est que grâce au nôtre, NG SAST a été conçu pour détecter de manière réaliste les failles de sécurité et les failles dans la logique métier. Diagramme de propriété de codedonc ça ne crie pas au loup pour rien.

Quelques semaines passent au cours desquelles l’application frontale et l’API des microservices acquièrent rapidement des fonctionnalités. Ensuite, l’inattendu se produit – ShiftLeft NG SAST rapporte peu de résultats de sécurité et l’équipe devient très anxieuse. Ils décident de se rencontrer via Zoom pour discuter des résultats de sécurité le lendemain.

À suivre …


Sécurité des applications pour les constructeurs et les créateurs a été initialement publié dans Blog ShiftLeft sur un support où les gens poursuivent la conversation en mettant en évidence cette histoire et en y répondant.

*** Ceci est un blog syndiqué par Security Bloggers Network Blog ShiftLeft – Moyen écrit par Prabhu Subramanian. Lisez l’article original sur: https://blog.shiftleft.io/application-security-for-builders-and-creators-eaba136fc1cf?source=rss—-86a4f941c7da—4



Source link

Recent Posts