Bypass voor aftakkingsbescherming

Bypass voor aftakkingsbescherming

Sluit de hoofdleiding af voordat iemand er met kracht overheen duwt.

Wat is Bypass voor aftakkingsbescherming?

Een standaardbranch zonder bescherming accepteert alles wat ernaar wordt gepusht. Iedereen met push-toegang kan zich rechtstreeks engageren voor main of force-push over zijn geschiedenis. Review- en statuscontroles werken alleen als er iets doorheen dwingt. U gaat rechtstreeks naar de hoofdpagina met de inloggegevens van een phished-bijdrager, forceert vervolgens de geschiedenis en ziet hoe CI wordt overgeslagen. U voegt branch-bescherming toe: vereist een pull-verzoek, reviewers, het passeren van controles en geen force-pushs, met de instelling include-administrators ingeschakeld, omdat een regel waar geprivilegieerde accounts omheen kunnen stappen geen controle is.

Wat je leert in Bypass voor aftakkingsbescherming

Bypass voor aftakkingsbescherming — Trainingsstappen

  1. Een gestolen contribuantenstoel

    Vandaag richt Bob zich op Riftwell, een logistiek softwarebedrijf. Hij heeft de inloggegevens van een bijdrager voor de dispatch-api-repository gephapt en wil dat zijn eigen code in productie wordt uitgevoerd, zonder dat één persoon deze eerst heeft beoordeeld. Hij begint met het openen van de repository waar het gestolen account naartoe kan pushen.

  2. Niets bewaakt de hoofdleiding

    Het statusbord van de repository vertelt Bob alles wat hij nodig heeft. De standaardvertakking is hoofd, de vertakkingsbescherming luidt 'geen', en elke push naar hoofd wordt rechtstreeks in productie genomen. Zonder regels voor de branch kan hij er rechtstreeks naartoe gaan en de geschiedenis ervan forceren, en alles wat schepen op eigen kracht in productie brengt.

  3. Kloon de repository

    Bob kloont de repository lokaal met het gestolen account, zodat hij de geschiedenis ervan kan herschrijven en zijn wijziging kan opbouwen voordat hij deze terugzet naar de hoofdmap.

  4. Terugspoelen voorbij de audittoezegging

    De meest recent beoordeelde commit voor de belangrijkste toegevoegde auditregistratie aan de authenticatieservice, precies het record dat de wijziging zou markeren die Bob op het punt staat door te voeren. Dus begint hij met het terugdraaien van zijn lokale hoofdcommit, waarbij hij de commit voor het vastleggen van audits volledig laat vallen. Op een beschermde branch zou dit onmogelijk zijn. Hier is het een enkele opdracht.

  5. Force-duw over de hoofdleiding

    Bob duwt zijn teruggespoelde geschiedenis met geweld rechtstreeks naar de hoofdlijn. Omdat de branch geen bescherming heeft, accepteert de server deze en de beoordeelde commit voor het vastleggen van audits is verdwenen uit de gedeelde branch, alsof deze nooit is samengevoegd. Alle anderen die de leiding nemen, zullen die commit nu ook stilletjes verliezen. Dat is wat een force-push naar een gedeelde branch doet: het herschrijft de geschiedenis die andere mensen al hebben beoordeeld en waarop is voortgebouwd.

  6. Open de verificatie-middleware

    Nu voegt Bob zijn eigen code toe. Hij opent de authenticatie-middleware, het bestand waar elk verzoek aan de verzend-API doorheen gaat, en leest het schoon voordat het wordt aangeraakt.

  7. Plant de bypass

    Bob voegt een kort blok toe aan de bovenkant van de middleware. Het leest als een compatibiliteitsshim voor een verouderd relais, maar elk verzoek met één vaste headerwaarde wordt doorgestuurd als beheerder, zonder token en zonder handtekeningcontrole. Een achterdeur naar elke route die de dienst beschermt, vermomd als onschadelijk loodgieterswerk.

  8. In het volle zicht begraven

    Het toegevoegde blok bevindt zich tussen de gewone middleware en leest als iets dat een backend-ingenieur zou kunnen schrijven. Niets eraan ziet er in één oogopslag alarmerend uit, en dat is precies waarom het een snelle recensie zou overleven, als er ooit een recensie zou plaatsvinden.

  9. Verbind je met de belangrijkste

    Bob voert de wijziging rechtstreeks door op Main met een bericht over een relaistime-out, zonder enige vermelding van authenticatie. Er is geen branch en geen pull-request; de commit zit al op de standaard branch in zijn kloon.

  10. Direct door naar productie

    Bob pusht de commit rechtstreeks naar main. Er is geen pull-verzoek om te openen, geen reviewer om het goed te keuren en geen statuscontrole om te slagen. Het branch accepteert het, en omdat hij samenvoegt met de hoofdautomatische implementatie, is zijn achterdeur enkele seconden later live in productie.

Dekking van beveiligingsframeworks

CWE

  • CWE-285 Improper Authorization
  • CWE-862 Missing Authorization

MITRE ATT&CK

  • T1195.002 Supply Chain Compromise: Compromise Software Supply Chain

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