Aikido

Comprendre le risque lié aux licences open source dans les logiciels modernes

Mackenzie JacksonMackenzie Jackson
|
#
#

L'open source est l'une des meilleures choses qui soit arrivée au développement logiciel.

C'est aussi l'un des moyens les plus simples d'intégrer accidentellement des obligations légales auxquelles vous n'avez pas souscrit.

La plupart des équipes savent qu'elles dépendent fortement des dépendances open source. Moins nombreuses sont celles qui connaissent précisément les licences utilisées par ces dépendances, les obligations qui en découlent, ou comment ces licences se propagent à travers les dépendances transitives et les images de conteneurs.

Cet écart est ce que nous appelons le risque lié aux licences open source.

Qu'est-ce que le risque lié aux licences open source ?

Chaque package open source est accompagné d'une licence. Cette licence définit ce que vous êtes autorisé à faire avec le code et ce que vous devez faire en retour.

Le risque lié aux licences apparaît lorsque ces obligations entrent en conflit avec la manière dont vous construisez, distribuez ou monétisez votre logiciel.

Quelques exemples courants :

  • Les licences copyleft peuvent exiger que vous partagiez le code source sous certaines conditions
  • Les exigences d'attribution signifient que vous devez inclure le texte de la licence ou les avis de droit d'auteur dans votre distribution
  • Les licences à usage restreint peuvent interdire l'utilisation commerciale ou imposer des conditions inhabituelles
  • Les violations de politique se produisent lorsqu'une dépendance utilise une licence que votre entreprise n'autorise pas

Rien de tout cela ne signifie que l'open source est dangereux. Cela signifie simplement que les licences sont des règles, et que les règles s'appliquent toujours même lorsque le code est gratuit.

Licences open source courantes et leurs risques clés

Licence Type Courant dans Risques clés à connaître
MIT Permissive JavaScript, npm, Python Doit inclure le texte du droit d'auteur et de la licence dans les distributions ; souvent négligé dans les produits livrés
BSD (2 clauses / 3 clauses) Permissive Infrastructure, librairies réseau Attribution requise ; la 3e clause restreint l'utilisation des noms des contributeurs à des fins d'approbation
Apache 2.0 Permissive Java, cloud-native, projets CNCF Nécessite une attribution et un fichier NOTICE ; inclut une clause de résiliation de brevet
ISC Permissive Outillage de niveau système Très similaire à MIT ; l'attribution reste obligatoire
GPL v2 Copyleft fort Outils système, bibliothèques plus anciennes Peut exiger la publication du code source si distribué dans le cadre d'une œuvre combinée
GPL v3 Copyleft fort Outils de sécurité, de cryptographie, CLI Ajoute des clauses anti-tivoisation et de brevet ; souvent bloqué par la politique d'entreprise
LGPL v2.1 / v3 Copyleft faible Bibliothèques partagées C/C++ Permet la liaison dynamique, mais la liaison statique ou les modifications peuvent déclencher des exigences de divulgation du code source
AGPL v3 Copyleft réseau Bases de données, services backend Peut exiger la divulgation du code source même lorsque le logiciel est uniquement proposé en tant que service
MPL 2.0 Copyleft au niveau du fichier Firefox, certaines bibliothèques backend Les modifications apportées aux fichiers sous licence doivent être divulguées ; le mélange de fichiers peut entraîner de la confusion
CDDL Copyleft faible Bases de données, Java hérité Incompatible avec la GPL ; les conflits de licence peuvent bloquer la redistribution
EPL 2.0 Copyleft faible Frameworks Java Copyleft au niveau du fichier ; problèmes de compatibilité avec la GPL
SSPL Code source disponible (non OSI) Bases de données (par exemple, les forks de MongoDB) Restrictions d'utilisation commerciale ; généralement non considéré comme open source
BSL Source-available Bases de données, outils d'infrastructure Open source à délai ; des restrictions commerciales s'appliquent jusqu'à la conversion
Unlicense / Domaine public Similaire au domaine public Petits utilitaires Certaines équipes juridiques rejettent en raison d'une applicabilité juridictionnelle peu claire
Propriétaire / Personnalisé Restreint SDKs fournisseurs Les conditions d'utilisation peuvent interdire la redistribution, la modification ou l'utilisation commerciale

Pourquoi cela prend toujours les équipes au dépourvu

La plupart des problèmes de licence ne sont pas causés par de mauvaises décisions. Ils surviennent parce que les logiciels modernes sont complexes, stratifiés et évoluent rapidement.

Quelques raisons pour lesquelles le risque de licence est souvent négligé :

1. Les dépendances transitives s'accumulent rapidement

Vous ajoutez un paquet. Ce paquet en ajoute dix autres. Ceux-ci en ajoutent cinquante de plus.

Quelque part dans l'arborescence, une dépendance introduit une licence que votre équipe n'aurait jamais choisie directement. Vous la livrez quand même.

2. Les métadonnées de licence sont désordonnées

Les registres de paquets ne sont pas parfaits. Les licences peuvent être manquantes, mal étiquetées ou trop larges. Certains paquets listent plusieurs licences. Certains changent de licence entre les versions.

Se fier à un seul champ de métadonnées est souvent insuffisant.

3. Les conteneurs apportent leur lot de surprises

Votre dépôt source peut être propre, mais votre image conteneur inclut des paquets système, des runtimes de langage et des outils de build.

Elles sont également soumises à des licences.

4. Les audits ne tiennent pas compte de l'intention

Les clients, partenaires et équipes d'approvisionnement demandent de plus en plus des SBOMs et des divulgations de licences. “Nous n'avions pas réalisé sa présence” n'est pas une réponse satisfaisante lors d'un audit.

À quoi ressemble réellement une bonne hygiène des licences

Il n'est pas nécessaire d'avoir un diplôme en droit ou un processus de six mois pour gérer les risques liés aux licences. Les équipes qui y parviennent suivent généralement quelques principes simples.

Définir une politique de licences claire

Décidez quelles licences sont autorisées, lesquelles nécessitent un examen et lesquelles sont bloquées. 

Scannez en continu, pas une fois par an

Les vérifications de licences fonctionnent mieux lorsqu'elles s'exécutent automatiquement dans le cadre de votre flux de travail habituel. Les pull requests, la CI et les pipelines de release sont des endroits idéaux pour détecter les problèmes tôt.

Résoudre un problème de licence avant qu'une dépendance ne soit livrée est considérablement plus facile que de le résoudre une fois que les clients sont impliqués.

Priorisez les risques réels

Toutes les détections de licences ne méritent pas le même niveau d'attention. Un scanner qui traite tout comme critique devient rapidement un bruit de fond.

Vous voulez que les licences les plus risquées ressortent afin que les équipes puissent agir rapidement et en toute confiance.

Générez des livrables prêts pour l'audit

À un moment donné, quelqu'un demandera un SBOM ou un rapport de licences. Lorsque cela se produit, vous voulez cliquer sur “exporter”, et non vous lancer dans une aventure de feuille de calcul.

L'application des licences en pratique 

L'application des licences fonctionne mieux lorsqu'elle s'exécute là où les développeurs travaillent déjà.

En pratique, cela signifie que les vérifications de licences se produisent automatiquement lors des pull requests et des exécutions de CI, et non comme un processus d'audit distinct. Lorsqu'une dépendance introduit une licence qui enfreint la politique, les équipes peuvent choisir comment réagir : bloquer la modification, la signaler pour examen ou simplement la surveiller.

Faire apparaître les problèmes de licence avant que le code ne soit merge rend l'application prévisible et évite les surprises de dernière minute lors des releases ou des audits.

Comment Aikido détermine le risque lié aux licences (et pourquoi c'est fiable)

Aikido utilise une approche multicouche pour la détection des licences qui privilégie la précision, un faible niveau de bruit et la préparation à l'audit.


De nombreux scanners de licences produisent un grand nombre de faux positifs en s'appuyant sur la correspondance de motifs statiques ou des métadonnées incomplètes. Avec le temps, cela érode la confiance dans les résultats et amène les équipes à ignorer complètement les détections de licences.

Aikido ne s'appuie pas sur un seul champ “licence” provenant d'un registre de paquets. Dans les arbres de dépendances réels, ces métadonnées sont souvent manquantes, incohérentes ou trompeuses.

Au lieu de cela, nous utilisons un processus multicouche conçu pour être à la fois précis et compatible avec les audits :

1) Nous construisons un graphe complet des dépendances et des licences

Nous ingérons les manifestes et les fichiers de verrouillage à travers plusieurs écosystèmes et les normalisons en un graphe de dépendances. Chaque dépendance est enrichie de métadonnées de registre et de dépôt afin que vous obteniez un inventaire fiable de ce que vous livrez réellement, y compris les dépendances transitives et les packages OS dans les images de conteneurs.

2) Règles d'abord pour les cas courants

Pour les 80 % des packages avec des licences standards (MIT, Apache-2.0, BSD, etc.), Aikido utilise des règles de détection déterministes. Cette approche est rapide, cohérente et réduit le bruit inutile.

3) Analyse par IA pour les cas ambigus ou complexes

Lorsque les licences sont peu claires (conditions personnalisées, formatage inhabituel, métadonnées manquantes ou fichiers de licence multiples), Aikido applique une analyse basée sur l'IA pour interpréter le contenu du package et identifier les obligations que les outils statiques manquent souvent.

Pour gérer les textes de licence volumineux ou non standards, nous découpons les fichiers de licence en sections pertinentes afin que le modèle puisse se concentrer sur les parties importantes (clauses de copyleft, exigences de redistribution, conditions d'utilisation restreinte, etc.).

4) Validation juridique humaine pour les cas limites à fort impact

Aikido inclut une étape de validation où les résultats ambigus ou à fort impact peuvent être examinés par des experts juridiques. Cela garantit que la classification finale reflète les obligations de licence réelles, et non une simple automatisation basée sur le meilleur effort.

5) Résultats spécifiques à la version et application des politiques

Les obligations de licence peuvent évoluer entre les versions. Aikido résout les licences pour les versions exactes des dépendances que vous déployez et connecte ces données aux contrôles de politique, permettant ainsi aux équipes d'appliquer des règles de type « autoriser / réviser / bloquer » directement dans la CI/CD.

Comment Aikido se compare aux autres outils

Fonctionnalité Aikido Socket JFrog Curation
Approche de détection des licences Hybride (règles + IA + examen juridique) Correspondance de motifs statiques Métadonnées + règles
Faux positifs Faible Élevé Moyen
Licences personnalisées / propriétaires Solide Limité Limité
Résolution spécifique à la version Oui Souvent fragile Partiel
Application au moment de la PR Oui Oui Oui
Détection de malwares Oui Non Limité
Risque pré-CVE / sans CVE Oui Non Limité
Couverture de l'écosystème Très large Axé sur JS Large
Packages OS dans les conteneurs Oui Partiel Oui

Aikido utilise une approche hybride qui combine des règles, une analyse basée sur l'IA et une validation juridique. Cela se traduit par moins de faux positifs et une meilleure gestion des licences personnalisées ou propriétaires par rapport aux outils qui reposent principalement sur la correspondance de motifs statiques.

Contrairement aux outils qui se concentrent uniquement sur le texte de licence, Aikido détecte également les malwares et les risques pré-CVE, offrant une vue plus complète du risque lié à la chaîne d'approvisionnement logicielle. La couverture de l'écosystème s'étend au-delà des dépendances d'application pour inclure les packages de système d'exploitation dans les images de conteneurs.

Socket se concentre principalement sur les écosystèmes JavaScript et la détection statique de licences, ce qui entraîne souvent des taux de faux positifs plus élevés et une gestion des versions fragile. JFrog Curation offre un support d'écosystème plus large, mais propose une gestion plus limitée des licences personnalisées et des risques non liés aux CVE.

L'application des licences n'existe pas de manière isolée. Le risque réel de la chaîne d'approvisionnement inclut les malwares, les packages compromis et les menaces émergentes qui ne sont pas encore associés à des CVE. Aikido a été conçu pour gérer le risque lié aux licences dans ce contexte plus large.

Réflexions finales

Les licences open source ne sont pas à craindre, mais elles sont à respecter.

Avec l'ampleur des arbres de dépendances modernes, le suivi manuel ne fonctionne pas. Les équipes qui anticipent le risque lié aux licences réussissent trois choses : elles automatisent la visibilité, priorisent les problèmes réels et intègrent des vérifications tôt dans le développement.

C'est exactement ce que nous avons conçu Aikido pour faire.

Si vous voulez voir comment le scan de licences s'intègre à vos workflows existants, vous pouvez l'essayer ou générer votre premier SBOM en quelques minutes. Votre futur vous, et probablement votre équipe juridique, vous remercieront.

4.7/5

Sécurisez votre logiciel dès maintenant.

Essai gratuit
Sans CB
Planifiez une démo
Vos données ne seront pas partagées - Accès en lecture seule - Pas de CB nécessaire

Sécurisez-vous maintenant.

Sécuriser votre code, votre cloud et votre runtime dans un système centralisé unique.
Détectez et corrigez les vulnérabilités rapidement et automatiquement.

Pas de carte de crédit requise | Résultats du scan en 32 secondes.