Tous les articles

Malware à l'installation : ce que vérifie le pare-feu de GitHub

Sécurité · 4 min de lecture ·

On imagine souvent une dépendance malveillante comme du code qui fait des dégâts quand l'application l'exécute. GitHub fait remarquer, dans son annonce du 20 octobre 2026, qu'un nombre croissant d'attaques n'attendent pas ce moment : elles agissent pendant l'installation du paquet et récupèrent les identifiants du runner de CI ou du poste du développeur, sans que votre application exécute la moindre ligne du paquet. Quand le premier test démarre, le jeton est déjà parti. La réponse de GitHub est un pare-feu de paquets, en préversion publique, et il vaut la peine de savoir ce qu'il fait comme de mesurer à quel point son périmètre reste étroit aujourd'hui.

runner Actions agent de code pare-feu de paquets délai d'attente base des alertes attestation dégradée registre npm métadonnées et téléchargements passent tous par lui
Le pare-feu ne protège que les machines que vous dirigez vers lui. Un runner qui parle encore directement au registre reste en dehors.

Ce que le pare-feu inspecte

Selon la description de GitHub, le pare-feu se place entre vos points de terminaison, c'est-à-dire les runners Actions et les agents de code, et le registre amont, et il examine à la fois les requêtes de métadonnées et les téléchargements de paquets. Les politiques disponibles aujourd'hui : un délai d'attente configurable, une vérification dans la GitHub Advisory Database des alertes de malware et de vulnérabilité, et des contrôles de chaîne d'approvisionnement comme la rétrogradation d'attestation. Chaque point de terminaison doit être configuré pour passer par le pare-feu au lieu du registre, et si un paquet est bloqué à tort, vous pouvez demander une exception.

Ce qu'il ne couvre pas

Soyez précis sur le périmètre avant de construire un plan dessus. GitHub indique que la préversion s'adresse aux clients GitHub Enterprise Cloud, résidence des données comprise, et qu'elle ne prend en charge que les paquets npm pour l'instant. Sur un plan Free ou Team, vous ne l'avez donc pas, et pour un projet PHP, rien de votre installation Composer ne le traverse. Il est gratuit pendant la préversion, et GitHub annonce une facturation à l'usage plus tard, sur un modèle proche de celui d'Actions.

Côté publication, ça s'est durci le même mois

Deux changements npm du 2 octobre poussent depuis l'autre bout. npm stage publish peut maintenant créer un paquet entièrement nouveau : la première version entre dans une file d'attente, et un mainteneur doit la promouvoir avant que quiconque puisse l'installer. Et les configurations de publication de confiance non validées expirent désormais 48 heures après leur création, ce qui limite le risque de faire confiance à un nom de dépôt ou de projet qui change ensuite de propriétaire. Une configuration est validée par sa première publication réussie. npm refuse aussi les jetons de publication de confiance venant des événements de workflow issue_comment, en plus de la restriction existante sur pull_request_target ; npm conseille plutôt push, release ou workflow_dispatch.

n'installer que ce que dit le lockfile patienter avant une version toute neuve audit des alertes dans la CI aucun secret durable là où l'on installe profond la dernière couche limite ce qu'une installation piégée peut voler
Pratique générale, pas une partie du produit GitHub. Chaque couche attrape ce que celle du dessus a laissé passer.

Ce que vous pouvez faire sur n'importe quel plan

Cette partie est un conseil général, pas une affirmation sur le pare-feu. Versionnez vos lockfiles et installez à partir d'eux : npm ci côté JavaScript, composer install avec composer.lock côté PHP. Lancez une vérification des alertes en CI. --ignore-scripts saute les scripts de cycle de vie npm, mais ce n'est pas une défense complète, car les attaques à l'installation ne passent pas toutes par des scripts et certains paquets en ont réellement besoin. Un délai d'attente manuel, c'est simplement ne pas passer à une version publiée ces derniers jours, puisque la plupart des versions malveillantes sont repérées vite. Et la couche qui compte le plus : ne lancez pas d'installation sur une machine qui détient des identifiants à longue durée de vie.

npm ci
composer install --no-interaction
composer audit
Partez du principe qu'une installation peut lire tous les secrets de la machine où elle tourne, et décidez de ce qui vit sur cette machine en conséquence.

Ce site tourne sous Laravel avec un peu d'outillage JavaScript, donc le pare-feu n'en couvrirait jamais que la plus petite moitié. Côté PHP, l'équivalent est simple : installer depuis le composer.lock versionné, lancer composer audit en CI, et ne laisser entrer aucune mise à jour sans que quelqu'un la lise. Si vous êtes sur Enterprise Cloud, dirigez un seul runner vers le pare-feu, observez ce qu'il bloque pendant une semaine, puis élargissez. Source : GitHub Changelog, le pare-feu de paquets en préversion publique.

Ce que disent les lecteurs

  1. Pas encore de mot. Le premier est toujours le plus courageux.
Vous construisez quelque chose du genre ? Je peux vous aider. Écrivez-moi sur WhatsApp