mardi, novembre 28, 2023

De quoi votre code est-il réellement capable ?


Lorsque vous importez une bibliothèque tierce, vérifiez-vous chaque ligne de code ? La plupart des progiciels dépendent de bibliothèques externes, sachant que ces packages ne font rien d’inattendu. Si cette confiance est violée, les conséquences peuvent être énormes, que le package soit malveillant ou bien intentionné mais utilisant des autorisations trop larges, comme avec Log4j en 2021. La sécurité de la chaîne d’approvisionnement est un problème croissant, et nous espérons qu’une plus grande transparence sur les capacités des packages contribuera à rendre le codage sécurisé plus facile pour tous.

Éviter les mauvaises dépendances peut être difficile sans informations appropriées sur ce que fait réellement le code de la dépendance, et revoir chaque ligne de ce code est une tâche immense. Chaque dépendance apporte également ses propres dépendances, ce qui renforce le besoin de révision à travers un réseau croissant de dépendances transitives. Mais et s’il existait un moyen simple de connaître les capacités (les opérations privilégiées auxquelles le code accède) de vos dépendances ?

Capslock est un outil CLI d’analyse des capacités qui informe les utilisateurs des opérations privilégiées (comme l’accès au réseau et l’exécution de code arbitraire) dans un package donné et ses dépendances. Le mois dernier nous avons publié la version alpha de Capslock pour le langage Go, qui peut analyser et rendre compte des fonctionnalités utilisées sous la surface des logiciels open source.

Cet outil CLI fournira des informations plus approfondies sur le comportement des dépendances en signalant les chemins de code qui accèdent aux opérations privilégiées dans les bibliothèques standard. Dans les versions à venir, nous ajouterons la prise en charge des responsables open source pour prescrire et mettre en sandbox les fonctionnalités requises pour leurs packages, en soulignant aux utilisateurs les fonctionnalités présentes et en les alertant si elles changent.



Capacités vs vulnérabilités

La gestion des vulnérabilités est un élément important de la sécurité de votre chaîne d’approvisionnement, mais elle ne vous donne pas une idée complète de la sécurité d’utilisation de vos dépendances. L’ajout d’une analyse de capacités à votre posture de sécurité vous donne une meilleure idée des types de comportement que vous pouvez attendre de vos dépendances, identifie les points faibles potentiels et vous permet de faire un choix plus éclairé concernant l’utilisation d’une dépendance donnée.

Capslock est motivé par la conviction que le principe du moindre privilège (l’idée selon laquelle l’accès doit être limité à l’ensemble minimal réalisable et pratique) devrait être un concept de conception de premier ordre pour des logiciels sécurisés et utilisables. Appliqué au développement de logiciels, cela signifie qu’un package doit avoir accès uniquement aux fonctionnalités dont il a besoin dans le cadre de ses comportements de base. Par exemple, vous ne vous attendez pas à ce qu’un package d’analyse de données ait besoin d’accéder au réseau ou qu’une bibliothèque de journalisation inclue des fonctionnalités d’exécution de code à distance.

Capslock est initialement déployé pour Go, un langage avec un engagement fort en matière de sécurité et outillage fantastique pour trouver les vulnérabilités connues dans les dépendances des packages. Lorsque Capslock est utilisé parallèlement aux outils de gestion des vulnérabilités de Go, les développeurs peuvent utiliser des signaux supplémentaires et complémentaires pour éclairer la manière dont ils interprètent les vulnérabilités de leurs dépendances.

Ces signaux de capacité peuvent être utilisés pour

  • Trouvez le code avec les niveaux d’accès les plus élevés pour prioriser les audits, les révisions de code et les correctifs de vulnérabilité.

  • Comparez les dépendances potentielles ou recherchez des packages alternatifs lorsqu’une dépendance existante n’est plus appropriée

  • Détectez l’utilisation de fonctionnalités indésirables dans les packages pour découvrir de nouvelles vulnérabilités ou identifier les attaques de la chaîne d’approvisionnement en cours.

  • Surveillez les fonctionnalités émergentes inattendues en raison de modifications de version de package ou de dépendances, et intégrez même la surveillance des fonctionnalités dans les pipelines CI/CD.

  • Filtrez les données de vulnérabilité pour répondre aux cas les plus pertinents, comme la recherche de packages ayant accès au réseau lors d’une alerte de vulnérabilité spécifique au réseau.



Utiliser le verrouillage des majuscules

Nous sommes impatients d’ajouter de nouvelles fonctionnalités dans les versions futures, telles qu’une meilleure prise en charge de la déclaration des capacités attendues d’un package et une extension à d’autres langages de programmation. Nous travaillons à appliquer Capslock à grande échelle et à rendre les informations sur les capacités des packages open source largement disponibles dans divers outils communautaires tels que deps.dev.

Tu peux essayez Capslock maintenantet nous espérons que vous le trouverez utile pour auditer vos dépendances externes et prendre des décisions éclairées sur les capacités de votre code.

Nous serons à Gophercon à San Diego le 27 septembre 2023—viens discuter avec nous !

Related Articles

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici

Latest Articles