Sécuriser le développement à distance : conseils et astuces
31 mars 2020
0 minutes de lectureSécuriser le développement à distance
Alors que nous nous préparons à une longue période de télétravail, nous devons réévaluer différentes méthodes de travail — et la sécurité ne fait pas exception. La collaboration à distance, nouvelle pour beaucoup, peut nécessiter des changements dans vos pratiques ou priorités en matière de sécurité.
Voici donc quelques pistes pour adapter vos politiques de sécurité à une main-d’œuvre désormais à distance. Au-delà de leurs avantages immédiats, ces pratiques vous aideront à faire évoluer vos pratiques de sécurité, même lorsque les équipes auront retrouvé leurs bureaux.
Téléchargez notre aide-mémoire pratique : Sécuriser le développement à distance.
Donnez les moyens aux développeurs à distance grâce à des consignes documentées
Pour bien développer à distance, surtout quand les enfants courent partout, il faut permettre à chaque développeur d’avancer de son côté et privilégier une communication asynchrone. Cela signifie moins d’attente pour les approbations et davantage de pouvoir décisionnel. Côté sécurité, vous devez donc revoir vos processus d’approbation et déterminer quelles décisions vous pouvez déléguer aux développeurs. Au lieu d’attendre une approbation, ils peuvent faire avancer les choses et vous tenir informé de leurs actions et décisions.
Pour donner efficacement plus d’autonomie, il faut s’entendre sur les attentes : tout le monde sait-il ce qu’il doit faire et ce que signifie mener une tâche à bien ? Vous devez donc investir dans la documentation de vos pratiques et de vos attentes, afin que les développeurs puissent prendre systématiquement les bonnes décisions.
Évitez autant que possible de bloquer le build : faites plutôt échouer les pull requests
« Bloquer le build » en cas de problème de sécurité est une mesure de sécurité CI/CD très répandue, mais aussi très perturbatrice. Sans build réussi, le logiciel ne peut pas avancer et les développeurs se retrouvent largement bloqués. C’est particulièrement vrai lorsque le blocage est dû à une cause externe, comme la divulgation d’une nouvelle vulnérabilité dans une bibliothèque que vous utilisez déjà.
À distance et en mode asynchrone, ces perturbations sont bien plus importantes : les équipes mettront plus de temps à cerner le problème, à désigner quelqu’un pour le corriger et à le résoudre. Limitez donc ces blocages aux cas vraiment extrêmes, comme une vulnérabilité critique qui justifie réellement d’interrompre toutes les activités pour la traiter.
Pour les autres problèmes, faites plutôt échouer les pull requests. Elles présentent plusieurs avantages :
Elles vous permettent de tester uniquement les nouvelles modifications du code, que le développeur devrait pouvoir corriger.
Elles sont davantage circonscrites à la branche où le code est modifié, ce qui préserve l’autonomie de chaque développeur.
Vous pouvez décider si un échec donné bloque une fusion ou sert uniquement à informer, laissant ainsi aux développeurs la possibilité de décider et de poursuivre.
Investissez dans la visibilité en matière de sécurité
L’autonomie des développeurs est une bonne chose, mais vous devez aussi veiller à la sécurité. Au lieu de créer des obstacles, répondez à ce besoin par la gouvernance et la visibilité. DevOps nous a appris que nous pouvions tolérer davantage de bugs en production, à condition de pouvoir les détecter et les corriger rapidement. Autrement dit, il est peu probable qu’une vulnérabilité soit exploitée dès son déploiement. Réagir rapidement est presque aussi efficace que de ne jamais introduire le problème, et bien moins perturbant.
La visibilité peut prendre de nombreuses formes. Voici quelques suggestions :
Instrumentez les builds pour répertorier les dépendances intégrées à votre application. C’est ce qu’on appelle unenomenclature logicielle, ou SBOM. Grâce à une SBOM, vous saurez si une vulnérabilité récemment divulguée affecte votre projet.
Signalez les vulnérabilités détectées pendant le build (si elles ne sont pas assez graves pour le bloquer).Un canal Slack ou des e-mails de notification peuvent permettre aux membres de l’équipe de sécurité de passer régulièrement les problèmes en revue.
Créez des classements montrant comment les différentes équipes gèrent les problèmes de sécurité. Les réussites en matière de sécurité (par exemple, le délai de correction d’une vulnérabilité) peuvent être partagées entre les équipes. Vous pouvez ainsi gamifier le processus et créer une dynamique collective en faveur de l’amélioration. Les équipes peuvent aussi constater leurs progrès au fil du temps ou rectifier le tir si elles n’avancent pas comme elles le souhaitent. Veillez à ce que ces classements soient purement informatifs et résistez à la tentation de les utiliser pour évaluer les performances. Cette approche pourrait nuire à la création d’une culture ouverte de la sécurité.
Développez vos compétences, que vous travailliez dans la sécurité ou le développement
Le travail à distance peut être un exercice d’autonomie, parfois intimidant au début. Pourtant, beaucoup de télétravailleurs constatent qu’ils disposent de plus de temps dans la journée — auparavant consacré aux trajets — pour se former. Profitez-en pour faire progresser vos équipes, aussi bien du côté du développement que de la sécurité.
Pour les développeurs, investissez dans la formation à la sécurité. Vous pouvez vous appuyer sur des contenus en ligne comme MyDevSecOps, les vidéos des conférences OWASP ou DevSecCon, ou encore des outils commerciaux comme SecureCodeWarrior. Ne manquez pas le prochain événement en ligne AllTheTalks, dont les recettes seront reversées à des associations qui luttent contre la COVID-19 !
Pour les équipes de sécurité, profitez de cette période pour développer ou renforcer les compétences en programmation de l’équipe. Elles seront précieuses à l’heure du DevSecOps. En apprendre davantage sur la programmation vous aidera aussi à mieux comprendre les développeurs. Voici quelques ressources pour commencer :
Célébrez les réussites en matière de sécurité
Pensez à féliciter virtuellement les développeurs lorsqu’ils contribuent à faire progresser la sécurité. Les développeurs sont des personnes qui, comme tout le monde, ont besoin de reconnaissance pour continuer à bien travailler. Et ils l’ont bien méritée !
C’est d’autant plus important en télétravail. Les signes de reconnaissance, comme un mot gentil au bureau ou un « high five » (ou peut-être un check du coude…), ne sont plus possibles : il faut donc trouver des équivalents virtuels. Le télétravail peut être solitaire et isolant. Encourager les personnes lorsqu’elles font du bon travail peut faire toute la différence.
Comment reconnaître le bon travail ? Les possibilités sont nombreuses : laissez libre cours à votre créativité ! Voici quelques suggestions :
Un mot gentil sur Slack ou dans un e-mail de groupe. C’est simple, mais important. Cela peut être ponctuel ou prendre la forme d’un titre de « champion de la sécurité du mois », à condition de renouveler l’initiative. Vous pouvez même saluer publiquement leur travail sur le compte social de votre entreprise, si cela s’y prête.
Des cadeaux promotionnels, des autocollants aux t-shirts et sweats à capuche, réservés à celles et ceux qui les ont mérités. Vous trouverez de nombreux exemples dans le podcast The Secure Developer.
Un cadeau de valeur, comme une journée au spa ou un voyage avec billet pour DefCon (si les conférences reprennent après la crise).
Associez les partenaires sécurité aux équipes de développement et échangez régulièrement
Il est déjà difficile de nouer une relation ; la créer ou l’entretenir à distance l’est encore plus. Pour que les développeurs à distance sachent à qui s’adresser en cas de question de sécurité, il faut établir un lien clair entre les équipes de développement et leurs interlocuteurs en sécurité.
Cela ne nécessite pas de réorganiser les équipes, mais simplement de rapprocher les personnes dans leurs pratiques quotidiennes. Pour chaque membre de vos équipes AppSec, sécurité produit ou sécurité cloud (quelle que soit votre organisation), associez un responsable ou directeur du développement. Planifiez des points réguliers entre ces interlocuteurs et invitez le partenaire sécurité aux réunions quotidiennes virtuelles et autres activités des équipes de développement. Ces échanges viendront compléter les réunions de l’équipe sécurité, qui vous donnent une vue d’ensemble de l’organisation. Écoutez Sara expliquer comment Invision s’y prend dans le podcast The Secure Developer.
Concentrez-vous sur l’hygiène de sécurité
Notre nouvelle réalité exige de rester concentrés pour accomplir l’essentiel. En sécurité, cela signifie donner la priorité aux fondamentaux plutôt qu’aux attaques complexes. Pour la grande majorité des entreprises, il est plus important de gérer efficacement les composants vulnérables, les erreurs de configuration et les jetons exposés que de se prémunir contre des attaques sophistiquées.
Une fois l’hygiène de sécurité bien intégrée dans vos équipes de développement à distance, vous pourrez élargir à nouveau vos horizons. Pour reprendre le vocabulaire de la COVID-19, assurez-vous que tout le monde se lave régulièrement les mains avant de commencer à acheter des combinaisons de protection.
Renforcez les défenses de vos infrastructures critiques
Si vous comptez encore sur des réseaux à accès privilégié, c’est le moment d’y renoncer. Les employés peuvent utiliser un VPN, mais les réseaux domestiques (et leur équipement) sont bien moins sécurisés que votre environnement d’entreprise. Attendez-vous donc à davantage d’attaques passant par ces réseaux.
Investissez dans l’authentification multifacteur ou renforcez-la
Profitez-en pour commencer à investir dans une infrastructure d’authentification à deux facteurs. Sécuriser l’authentification des employés à distance sera essentiel pendant cette période, que vous travailliez dans le cloud ou qu’ils se connectent à votre infrastructure d’entreprise par VPN. La bonne nouvelle, c’est que ces investissements, même s’ils n’étaient pas prévus, porteront leurs fruits à l’avenir : vous pourrez étendre cette capacité à d’autres systèmes de votre réseau ou de votre environnement cloud.
Renforcez la sécurité SSH
Vous pouvez sécuriser vos connexions SSH en activant l’authentification mutuelle et en raccourcissant la durée des sessions. Les développeurs accèdent souvent aux machines de production via SSH, et ces points d’accès sont authentifiés au moyen de clés privées statiques toujours présentes sur les machines.
À mesure que davantage de ces machines sont accessibles à distance, le risque d’attaque augmente. Il devient alors essentiel de renforcer l’authentification sur ces interfaces. Ajouter ou raccourcir les délais d’expiration des sessions permet également d’éviter que les postes de travail des développeurs restent connectés à des systèmes critiques ou à des dépôts de code lorsqu’ils sont inactifs.
Pour aller plus loin, envisagez des systèmes open source comme BLESS de Netflix ou SmallStep, ou des solutions commerciales comme Okta, afin de renforcer l’authentification basée sur l’identité. Pour en savoir plus, consultez mon intervention à InfoQ, « Developer as a Malware Distribution Vehicle ».
Programmes de chasse aux bugs
Certaines entreprises suspendant temporairement leurs activités, de nombreuses personnes chercheront des opportunités sur les plateformes de travail à la mission. C’est une excellente occasion de renforcer votre stratégie d’évaluation de la sécurité grâce à un programme de chasse aux bugs. Vous créerez du travail pour des personnes qui en ont besoin tout en renforçant la résilience de vos logiciels.
Les programmes de chasse aux bugs permettent d’ajouter une capacité d’évaluation de la sécurité et d’indiquer clairement aux chercheurs comment signaler les vulnérabilités à votre organisation. Découvrez Hacker One ou BugCrowd, deux plateformes à envisager. Elles peuvent vous accompagner dans une grande partie de la mise en place de votre programme. Si vous avez un peu de temps libre, vous pourriez même participer en tant que hacker !
Conclusion
Alors que de nombreuses organisations s’adaptent à la nouvelle normalité du travail à distance, il est important de tenir compte des habitudes de travail de chacun et de structurer nos défenses de sécurité pour répondre directement à ces habitudes. Comprendre le quotidien des développeurs et mettre en place des contrôles de sécurité qui les protègent tout en leur permettant de faire leur travail sera essentiel pour traverser cette période difficile.
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.



