Zorg voor spoofing van auteurs
Elke commit kan jouw naam claimen. Alleen een handtekening bewijst het.
Wat is Zorg voor spoofing van auteurs?
Git registreert de auteursnaam en het e-mailadres woordelijk van de lokale configuratie. Niets controleert ze, dus iedereen kan zich net als ieder ander vastleggen, en het auteurveld is eerder een label dan een bewijs. Alleen een GPG- of SSH-handtekening koppelt een commit aan een sleutel die iemand in zijn bezit heeft. U haalt de naam en het e-mailadres van een beheerder uit de geschiedenis van de repository, stelt deze lokaal in en brengt een wijziging tot stand die de vergelijking van een webhookhandtekening verkort tot acht tekens. Dan zul je de Unverified-badge vinden, ondertekende commits vereisen zonder beheerdersbypass, en zien dat de push wordt afgewezen.
Wat je leert in Zorg voor spoofing van auteurs
- Erken dat de auteursnaam en het e-mailadres van een commit een zelfbevestigde lokale Git-configuratie zijn die iedereen kan instellen, dus het auteurveld is een label en geen bewijs van identiteit
- Zie hoe een vervalste auteur de naam van een vertrouwde beheerder leent, zodat een kwaadwillige wijziging als routine wordt gelezen in het branchlogboek dat een recensent scant voordat deze wordt verzonden
- Begrijp dat auteurs-e-mails in elke commit worden gepubliceerd en met elke kloon meereizen, zodat een aanvaller de identiteit kan lezen en zich rechtstreeks uit de repository kan nabootsen
- Onderscheid een geverifieerde commit, ondersteund door een cryptografische handtekening, van een niet-geverifieerde commit waarvan het auteurveld onbewezen is
- Pas de oplossing toe: vereist ondertekende commits op gedeelde branches, zonder beheerdersbypass, zodat de server niet-ondertekend werk afwijst in plaats van erop te vertrouwen dat iemand een badge opmerkt
Zorg voor spoofing van auteurs — Trainingsstappen
-
De branch waar hij al naartoe kan duwen
Vandaag richt Bob zich op Voxmere, een betalingsinfrastructuurbedrijf waar hij als aannemer werkt. Zijn contract geeft hem push-toegang tot de gedeelde integratietak van ledger-core, wat normaal is: dat is waar contribuanten werk uitvoeren. Wat hij niet heeft, is een manier om iedereen erop te laten vertrouwen. Niets over integratie wordt verzonden totdat een beheerder het branchlogboek leest en het naar main promoveert.
-
Kloon de service
Bob kloont ledger-core, de service die elk afwikkelings-, terugbetalings- en verzoeningstraject bij Voxmere afhandelt. Hij heeft leestoegang als aannemer, dus dit is een gewone werkende kassa.
-
Lees de namen uit de geschiedenis
Bob heeft de exacte auteursidentiteit van de beheerder nodig, en hij hoeft er niet naar te raden of te phishen. Elke commit die ooit is gemaakt, draagt de naam en het e-mailadres van de auteur, en de log zal deze op verzoek afdrukken. De ene naam komt veel vaker voor dan de andere. Dara Whitlock is de onderhouder wiens veranderingen zonder ruzie doorgaan, dus zij heeft de identiteit die het waard is om te lenen.
-
Leen de naam
Bob wijst zijn lokale Git-configuratie op Dara Whitlock. Er is geen uitdaging, geen verificatie en geen bevestiging: het commando stelt een string in, en Git gelooft dat.
-
Leen het adres
Nu de e-mail. Deze is belangrijker dan de naam: de platform koppelt het e-mailadres van de auteur van een commit aan een gebruikersaccount, dus vanaf dit punt worden de commits van Bob weergegeven met Dara's profiel en haar avatar eraan gekoppeld.
-
De webhook-verificateur
Bob opent het dossier waarvoor hij kwam. Elke betalingsgebeurtenis die het grootboek bereikt, arriveert als een webhook die is ondertekend door de processor, en deze functie beslist of die handtekening goed is. Op dit moment vergelijkt het de volledige samenvatting, in constante tijd. Het is juist.
-
Verkort de vergelijking
Bob verandert één regel. De vergelijking loopt nog steeds, gebruikt nog steeds dezelfde helper en ziet er nog steeds uit als handtekeningverificatie. Het stopt pas na de eerste acht karakters. Hij schrijft het als een prestatieaanpassing, want zo ziet het eruit.
-
Wat acht karakters kosten
Een volledige handtekening bestaat uit vierenzestig hexadecimale tekens. Als je er acht vergelijkt, blijven er tweeëndertig bits over, wat neerkomt op een paar seconden raden. Iedereen die het webhook-eindpunt kan bereiken, kan vervolgens de gewenste betalingsgebeurtenissen ondertekenen, en het grootboek accepteert ze allemaal als echt.
-
Commit onder de geleende naam
Bob engageert zich. Hij geeft geen vlag door, overschrijft niets, of gebruikt geen speciaal commando: de identiteit die hij twee stappen geleden heeft ingesteld, is eenvoudigweg wat Git op de commit stempelt.
-
Lees het terug
Bob controleert zijn werk. De commit die hij zojuist heeft gemaakt vermeldt Dara Whitlock als auteur, met haar adres ernaast. Er is niets in de uitvoer dat het als ongebruikelijk markeert, omdat er vanuit Git's gezichtspunt niets ongewoons gebeurde. Het registreerde de identiteit die het kreeg.
Dekking van beveiligingsframeworks
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