Commettre l'usurpation d'auteur
N'importe quel commit peut revendiquer votre nom. Seule une signature le prouve.
Qu'est-ce que Commettre l'usurpation d'auteur?
Git enregistre le nom de l'auteur et l'adresse e-mail de la configuration locale textuellement. Rien ne les vérifie, donc n'importe qui peut s'engager comme n'importe qui d'autre, et le champ auteur est une étiquette plutôt qu'une preuve. Seule une signature GPG ou SSH lie un commit à une clé détenue par quelqu'un. Vous prendrez le nom et l'adresse e-mail d'un responsable dans l'historique du référentiel, les définirez localement et apporterez une modification qui raccourcira la comparaison de signature de webhook à huit caractères. Ensuite, vous trouverez le badge Non vérifié, exigerez des validations signées sans contournement de l'administrateur et verrez le push rejeté.
Ce que vous apprendrez dans Commettre l'usurpation d'auteur
- Reconnaître que le nom et l'adresse e-mail de l'auteur d'un commit sont une configuration Git locale auto-affirmée que n'importe qui peut définir, de sorte que le champ de l'auteur est une étiquette et non une preuve d'identité.
- Découvrez comment un auteur usurpé emprunte le nom d'un responsable de confiance afin qu'une modification malveillante soit lue comme une routine dans le journal de branche qu'un réviseur analyse avant l'expédition.
- Comprenez que les e-mails des auteurs sont publiés dans chaque commit et voyagent avec chaque clone, afin qu'un attaquant puisse lire l'identité pour usurper l'identité directement à partir du référentiel.
- Distinguer un commit vérifié, soutenu par une signature cryptographique, d'un commit non vérifié dont le champ auteur n'est pas prouvé
- Appliquez le correctif : exigez des validations signées sur les branches partagées, sans contournement de l'administrateur, afin que le serveur rejette le travail non signé au lieu de compter sur quelqu'un qui remarque un badge.
Commettre l'usurpation d'auteur — Étapes de la formation
-
La branche vers laquelle il peut déjà pousser
Aujourd'hui, Bob cible Voxmere, une société d'infrastructure de paiement où il travaille en tant qu'entrepreneur. Son contrat lui donne un accès push à la branche d'intégration partagée de ledger-core, ce qui est normal : c'est là que les contributeurs travaillent. Ce qu'il n'a pas, c'est un moyen de faire en sorte que quiconque lui fasse confiance. Rien sur l'intégration n'est livré jusqu'à ce qu'un responsable lise le journal de la branche et le promeuve dans le main.
-
Cloner le service
Bob clone Ledger-Core, le service qui gère chaque chemin de règlement, de remboursement et de rapprochement chez Voxmere. Il dispose d'un accès en lecture en tant qu'entrepreneur, il s'agit donc d'une caisse de travail ordinaire.
-
Lisez les noms de l'histoire
Bob a besoin de l'identité exacte de l'auteur du responsable, et il n'a pas besoin de la deviner ou de l'hameçonner. Chaque commit jamais effectué porte le nom et l'adresse e-mail de son auteur, et le journal les imprimera sur demande. Un nom se répète bien plus que les autres. Dara Whitlock est la mainteneuse dont les changements se font sans contestation, c'est donc son identité qui mérite d'être empruntée.
-
Emprunter le nom
Bob pointe sa configuration Git locale vers Dara Whitlock. Il n'y a pas de défi, pas de vérification et pas de confirmation : la commande définit une chaîne et Git la croit.
-
Emprunter l'adresse
Maintenant l'e-mail. Celui-ci compte plus que le nom : la forge fait correspondre l'e-mail de l'auteur d'un commit à un compte utilisateur, donc à partir de ce moment, les commits de Bob seront rendus avec le profil de Dara et son avatar qui y sont attachés.
-
Le vérificateur de webhook
Bob ouvre le dossier qu'il est venu chercher. Chaque événement de paiement qui atteint le grand livre arrive sous la forme d'un webhook signé par le processeur, et c'est cette fonction qui décide si cette signature est bonne. À l'heure actuelle, il compare le résumé complet, en temps constant. C'est exact.
-
Raccourcir la comparaison
Bob change une ligne. La comparaison s'exécute toujours, utilise toujours le même assistant et ressemble toujours à une vérification de signature. Cela s'arrête juste après les huit premiers caractères. Il l'écrit comme un ajustement de performance, car c'est à cela que ça ressemble.
-
Ce que coûte huit personnages
Une signature complète comporte soixante-quatre caractères hexadécimaux. En comparant huit d’entre eux, il reste trente-deux bits, ce qui représente quelques secondes de deviner. Toute personne pouvant atteindre le point de terminaison du webhook peut alors signer les événements de paiement de son choix, et le grand livre acceptera chacun d'entre eux comme étant authentique.
-
S'engager sous le nom emprunté
Bob s'engage. Il ne transmet pas d'indicateur, n'écrase rien et n'utilise pas de commande spéciale : l'identité qu'il a définie il y a deux étapes est simplement celle que Git appose sur le commit.
-
Relisez-le
Bob vérifie son travail. Le commit qu'il vient de faire mentionne Dara Whitlock comme son auteur, avec son adresse à côté. Il n'y a rien dans la sortie qui le marque comme inhabituel, car du point de vue de Git, rien d'inhabituel ne s'est produit. Il a enregistré l'identité qui lui a été donnée.
Couverture des référentiels de sécurité
CWE
- CWE-345 Insufficient Verification of Data Authenticity
- CWE-347 Improper Verification of Cryptographic Signature
MITRE ATT&CK
- T1036 Masquerading
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security