Le programme Security Bug Bounty de GitHub fête ses 6 ans

Image of Shanku Niyogi

Découvrez le programme Security Bug Bounty de GitHub et prenez connaissance du récapitulatif des bugs de 2019, de l’élargissement de champ de compétences du programme, des nouvelles fonctionnalités, et plus encore.

Le mois dernier, GitHub a franchi des étapes décisives dans le cadre du Security Bug Bounty. Février 2020 a marqué les six ans du programme, six années pendant lesquelles GitHub a accepté des soumissions. Au fil des années, GitHub a  investi dans la communauté des bugs bounty par le biais d’événements en direct, de bug bounty privés, d’avant-premières produits et, bien sûr d’attribution de primes en espèces.

GitHub est heureux d’annoncer que le seuil du million de dollars de bourses attribué aux chercheurs a été franchi depuis que le programme a été transféré à HackerOne en 2016. Au cours de la seule année dernière, GitHub a versé plus de la moitié du total de ses bourses, soit des récompenses d’un montant total de près de 590 000 dollars pour l’ensemble de ses  programmes. 

Récapitulatif 2019 

Les “Cool bugs” 

Les meilleures soumissions reçues de la part de la communauté démontrent pour la plupart une compréhension de GitHub et de sa technologie qui va jusqu’à rivaliser avec celle des ingénieurs de l’entreprise. Pour attirer ces individus talentueux et les inciter à passer du temps à creuser en profondeur dans sa base de données, GitHub a offert des primes très compétitives.  

Contournement du flow d’OAuth en utilisant des requêtes HEAD intersites

GitHub offre aux intégrateurs différents moyens d’interagir avec son  écosystème. L’une des manières dont ceux-ci peuvent utiliser GitHub est d’avoir recours aux applications OAuth. Celles-ci permettent de mener des actions au nom d’un utilisateur GitHub. Avant d’accorder  l’accès aux données, une application OAuth redirige l’utilisateur vers GitHub.com, lui permettant de vérifier ces demandes  et d’autoriser explicitement l’application. 

Exécution de code à distance sur GitHub.com par injection de commandes

@ajxchapman a réussi à exécuter du code à distance dans GitHub.com en déclenchant l’injection de commandes dans la fonction d’import Mercurial. La logique d’import n’a pas correctement aseptisé les noms de branches, ce qui a permis à un nom de branche malveillant d’exécuter du code sur les serveurs de GitHub. Comme la fonction d’import est assez compliquée, le code est habituellement exécuté dans un bac à sable (SandBox) sur des serveurs dédiés, isolés du réseau de production de GitHub. Cette isolation a limité l’impact de la vulnérabilité. Un correctif a donc pu être rapidement publié pour GitHub.com. Correctif qui a ensuite été rétro porté pour les clients de GitHub Enterprise Server. GitHub a également vérifié la présence de problèmes similaires dans la logique d’import et a pu confirmer, grâce à ses journaux systèmes, que celle-ci n’avait  pas été exploitée en production.

Ce qui rend ce bug particulièrement intéressant est son origine. Il  a été causé par une dépendance obsolète. Le bug existait dans une dépendance qui gère les imports de code. Il avait déjà  été corrigé en amont. Cependant, GitHub n’avait pas réussi à rester à jour avec la dernière version, ce qui avait fini par rendre les applications vulnérables à ce problème. Ce bug souligne à quel point la gestion des dépendances est essentielle pour le succès d’un programme de sécurité dans son ensemble. GitHub continue à investir dans des outils de gestion des dépendances pour assurer la sécurité de l’entreprise et celle de ses  clients. 

Un champ élargi

GitHub a publié de nombreuses nouvelles fonctionnalités en 2019. Celles-ci ont été ajoutées au champ de son programme Security Bug Bounty :

  • Les Pull reminders ont été ajoutés pour permettre aux ingénieurs d’être tenus informés des demandes de pull requests entrantes qui nécessitent  une attention particulière. GitHub a inclus la solution dans son application de base et dans l’intégration existante de Slack.
  • Les mises à jour de sécurité automatisées (anciennement Dependabot) ont ajouté une façon plus efficace de suivre les vulnérabilités dans les dépendances. Désormais, lorsque de nouvelles demandes de pull requests sont ouvertes, une mise à jour de la version d’une dépendance est effectuée automatiquement dès qu’une correction de sécurité est identifiée. 
  • Avec GitHub pour mobile, GitHub entre pour la première fois dans l’App Store. Ceci a amené l’entreprise à répondre à de nouvelles exigences en ce qui concerne son API et le niveau de sécurité de son application. GitHub offre la même sécurité et les mêmes fonctionnalités que celles disponibles sur GitHub.com.
  • GitHub Actions est l’un des lancements les plus importants de GitHub depuis les pull requests. La solution a néanmoins apporté toute une catégorie de “corner cases” ou vulnérabilités. Grâce à une étroite collaboration avec ses  ingénieurs partenaires, GitHub a offert aux utilisateurs la possibilité d’exécuter leur code directement sur GitHub.com.
  • L’outil LGTM de Semmle a été un ajout important à la suite d’outils de sécurité de GitHub, tout comme Dependabot et les avis de sécurité des mainteneurs. LGTM permet  aux utilisateurs de rechercher des problèmes de sécurité potentiels dans leur code à chaque demande pull request. 

 

GitHub a reçu plusieurs soumissions de grande valeur. Celles-ci ont influencé de manière significative le développement de ses produits. L’entreprise a versé plus de 20 000 dollars de primes pour les vulnérabilités affectant les produits mentionnés ci-dessous. GitHub est heureux de continuer à étendre le champ d’application de son programme Security Bug Bounty  au fur et à mesure que l’entreprise se développe.

H1-702

En août 2019, GitHub est retourné à Las Vegas pour participer à son deuxième événement H1-702. Ce dernier  a réuni  les meilleurs hackers de la plateforme HackerOne ainsi que deux autres entreprises pour trois nuits de hacking en direct. GitHub était très heureux de participer et souhaitait donner aux chercheurs les éléments de motivation nécessaires pour les pousser à creuser en profondeur dans son application. Il est difficile d’exprimer à quel point les événements de live hacking, comme le H1-702, sont importants pour le programme GitHub Security Bug Bounty. GitHub espère que d’autres événements de ce genre se produiront à l’avenir pour inciter la communauté à participer.

Security Bug Bounty privé

Au-delà de la portée assez large du programme public, GitHub a conduit un programme privé – accessible sur invitation uniquement. Dans ce cadre, GitHub a donné un aperçu des fonctionnalités aux chercheurs avant qu’elles ne soient présentées publiquement. Ces programmes privés permettent à GitHub de travailler en étroite collaboration avec un petit groupe et d’identifier des bugs avant qu’ils ne puissent affecter la majorité des utilisateurs. 

Actions CI/CD

Suite au succès de sa première prime de bug privé ciblant la solution GitHub Actions, GitHub a voulu relancer un programme privé pour travailler sur la plus récente itération de GitHub Actions. Pour sécuriser le produit contre d’éventuels problèmes similaires, GitHub a utilisé ce qui a été appris lors du premier programme Security Bug Bounty. La communauté a accepté le défi et a identifié de nouveaux bugs dans la deuxième itération. 

Mises à jour de sécurité automatisées (anciennement Dependabot

Comme toute combinaison de deux systèmes complexes, l’acquisition de Dependabot a représenté un défi unique pour l’équipe de sécurité de GitHub de par la contrainte d’intégrer  deux architectures distinctes. GitHub a eu recours au bug bounty privé pour compléter son  propre examen de sécurité sur ces deux nouveaux services. Les résultats du programme de bug bounty privé ont largement contribué à l’intégration réussie de Dependabot à GitHub.com. Quelques problèmes ont même pu être mis en évidence avant le déploiement final. 

Pull reminders

Tout comme Dependabot, les pull reminders ont nécessité une grande attention pour assurer une transition sécurisée d’une intégration à un produit GitHub first-party. Les Pull reminders ont également gagné en complexité lors de leur connexion à Slack. L’intégration réalisée par GitHub a fourni une bonne base pour cette fonctionnalité. Néanmoins, relier ces deux fonctionnalités a nécessité de développer et de ré-architecturer la solution de manière significative. Une fois encore, GitHub s’est tourné vers sa communauté de chasseurs de bugs pour tester la bonne intégration de pull reminder avant de diffuser la fonctionnalité de manière plus large. 

 

Les Initiatives sur 2020

GitHub a beaucoup de projets pour 2020. Certains des changements à venir sont détaillés ci-dessous: 

Le programme Security Lab Bounty 

GitHub a lancé le programme Security Bug Bounty pour son Security Lab. L’objectif était d’inciter les chercheurs à aider GitHub à sécuriser tous ses logiciels open source. Le nouveau programme récompense les membres de la communauté qui écrivent des requêtes CodeQL qui permettent de détecter des classes de vulnérabilité entières afin que le reste de la communauté puisse exécuter ces requêtes sur leurs propres projets. Ceci permet de supprimer les vulnérabilités à grande échelle.

Contribuer à ce programme permet non seulement d’influencer l’état global de la sécurité des logiciels, mais aussi d’éviter que des vulnérabilités similaires ne soient mises sur le marché sur les versions futures. Il s’agit d’une évolution du programme traditionnel Security Bug Bounty de GitHub. GitHub est ravi de voir les chercheurs utiliser son nouvel outil CodeQL. À ce jour, GitHub a reçu 20 soumissions et attribué près de 21 000 dollars de bourse, ce qui a eu pour résultat direct de corriger des centaines de vulnérabilités dans l’écosystème du logiciel libre. 

CVE et divulgation

Cette année, GitHub  attribue des CVEs aux soumissions de primes qui concernent GitHub Enterprise Server. C’est un grand pas en avant pour GitHub dans la communication de l’état de ses logiciels aux clients, mais c’est aussi une nouvelle reconnaissance pour ses chercheurs qui identifient les vulnérabilités dans GitHub Enterprise Server.

 

En savoir plus

Visitez la page du programme Security Bug Bounty de GitHub pour en savoir plus sur son champ d’action, ses règles et les récompenses proposées. Toutes ces contributions rendent GitHub plus fort !