- Privalomas reikalavimas yra nuolatinis: Kūrėjai, kurie nesukonfigūruoja 2FA iki nustatyto termino, blokuojami nuo veiksmų žiniatinklyje ir pašalinami iš organizacijos saugyklų.
- Atkūrimo kodai yra jūsų gelbėjimosi liemenė: 16 sugeneruotų atkūrimo kodų yra vienkartiniai. Nedelsdami išsaugokite juos šifruotoje saugykloje arba neprisijungusiame fiziniame atspaude.
- Git slaptažodžiai nebeveikia: HTTPS Git push operacijos negali priimti interaktyvių 6 skaitmenų kodų. Privalote naudoti SSH raktus arba konkrečios apimties asmeninės prieigos raktus (PAT).
- Kriptografinis paskutinis šansas: Jei praradote telefoną ir kodus, galite įrodyti nuosavybę pasirašydami tapatybės iššūkį anksčiau registruotu vietiniu SSH privačiuoju raktu.
GitHub privalomos 2FA politikos apžvalga ir saugumo pagrindimas
Istoriškai pažeisti programuotojų prieigos duomenys sukeldavo katastrofiškus programinės įrangos tiekimo grandinės pažeidimus. Garsūs incidentai – tokie kaip event-stream, ua-parser-js, ctx ir colors.js paketų užgrobimas npm ir PyPI ekosistemose – parodė, kad viena pavogta paskyra gali sukelti pavojų šimtams tūkstančių komercinių ir ypatingos svarbos infrastruktūros projektų.
Užpuolikai renka duomenis naudodami nutekintų slaptažodžių sąrašus, fišingo infrastruktūrą ir užkrėstas priklausomybes. Kadangi programinės įrangos inžinieriai dažnai turi administratoriaus prieigą prie kodo ir CI/CD diegimo vamzdynų, kodo autorių apsauga tapo tarptautinio saugumo klausimu.
Reaguodamas į tai, GitHub įdiegė etapais vykdomą visuotinį reikalavimą, nurodantį privalomą dviejų veiksnių autentifikavimą visiems kodo autoriams, paketų leidėjams, įmonių naudotojams ir organizacijų nariams:
- GitHub internetinėje sąsajoje rodomas priverstinis blokavimo langas, draudžiantis peržiūrėti Pull Requests, komentuoti Issues ir administruoti saugyklas, kol nebus baigtas 2FA nustatymas.
- Įmonių organizacijos, reikalaujančios 2FA, automatiškai pašalins reikalavimų nesilaikančius narius, nedelsdamos atimdamos rašymo teises ir prieigą prie saugyklų.
- Automatizuoti darbo eigos procesai, npm paketų skelbimo raktai ir detalūs saugyklų leidimai įšaldomi, kol nepatvirtinama paskyros saugumo atitiktis.
Nuoseklus vadovas: TOTP autentifikavimo priemonės susiejimas
Nors GitHub palaiko SMS, mobiliuosius pranešimus ir aparatinius raktus, RFC 6238 TOTP autentifikavimo programėlės (pvz., Google Authenticator, Bitwarden, 2FA-Tool) yra auksinis standartas dėl nepriklausomybės nuo tiekėjų ir patikimo veikimo neprisijungus:
1 veiksmas: eikite į autentifikavimo nustatymus
Prisijunkite prie GitHub. Spustelėkite savo profilio nuotrauką viršutiniame dešiniajame kampe ➔ Settings. Kairėje šoninėje juostoje skiltyje „Access“ pasirinkite Password and authentication.
2 veiksmas: nuskaitykite QR kodą ir išsaugokite neapdorotą Base32 raktą
GitHub pateikia optinį QR kodą šalia tekstinės nuorodos: „enter this text code instead“ (įveskite šį tekstinį kodą).
A3J5N2O9...). Išsaugokite ją savo šifruotoje slaptažodžių tvarkyklėje. Šis pradinis raktas leidžia atkurti autentifikavimo kodus bet kuriame įrenginyje, jei jūsų telefonas būtų sunaikintas.
3 veiksmas: įveskite 6 skaitmenų kodą patvirtinimui
Nuskaitykite kodą savo mobiliąja programėle. Įveskite ekrane rodomą kintantį 6 skaitmenų skaičių į GitHub patvirtinimo laukelį ir spustelėkite „Continue“.
Atkūrimo kodų archyvavimo standartai ir kriptografinė higiena
Sėkmingai susiejus TOTP, GitHub iš karto parodo langą su 16 šešioliktainių kodų su brūkšneliais (pvz., d4a2b-98f12). Šio lango uždarymas neišsaugojus kodų yra dažniausia priežastis, kodėl kūrėjai visam laikui praranda prieigą prie savo paskyrų.
1. Tik vienkartinis naudojimas: Kiekvienas atkūrimo kodas negrįžtamai panaikinamas po pirmojo panaudojimo vietoje TOTP kodo.
2. Aukščiausia prieigos teisė: Atkūrimo kodas apeina trūkstamą techninę įrangą ir suteikia momentinę prieigą prie paskyros.
3. Serverio maišymas be žinojimo (Zero-Knowledge): GitHub saugo šiuos kodus kaip negrįžtamas vienkryptes kriptografines maišas. GitHub pagalbos inžinieriai jokiomis aplinkybėmis negali matyti ar atkurti jūsų pradinių kodų!
Rekomenduojama trijų lygių šaltojo saugojimo strategija:
Atsisiųskite failą github-recovery-codes.txt ir prisekite jį prie savo GitHub įrašo 1Password, Bitwarden arba KeePassXC programoje naudodami Argon2id pagrįstus raktus.
Išsaugokite tekstinį failą VeraCrypt užšifruotame neprisijungusiame USB diske, atjungtame nuo vietinių tinklų ir debesijos sinchronizavimo paslaugų.
Atspausdinkite popierinę kopiją, ją laminuokite ir padėkite į namų seifą, kad apsisaugotumėte nuo nuotolinių kenkėjiškų programų.
Atsarginiai autentifikavimo metodai: SMS prieš Passkeys ir GitHub Mobile
GitHub leidžia konfigūruoti antrinius atsarginius mechanizmus. Peržiūrėkite mūsų saugumo vertinimą:
| Metodas | Atsparumas fišingui | SIM keitimo (SIM-Swap) pažeidžiamumas | Vertinimas ir praktinis panaudojimas |
|---|---|---|---|
| Passkeys / FIDO2 saugumo raktai | Absoliutus (WebAuthn kilmės susiejimas užkerta kelią fišingui) | Atsparus | ⭐⭐⭐⭐⭐ Pagrindinė rekomendacija (YubiKey / Touch ID) |
| TOTP autentifikavimo programėlė | Vidutinis (pažeidžiama realaus laiko atvirkštiniams tarpiniams serveriams) | Atspari | ⭐⭐⭐⭐ Universalus standartas (jokios tinklo priklausomybės) |
| GitHub Mobile Push patvirtinimas | Vidutinis (reikalingas 2 skaitmenų skaičiaus patvirtinimas) | Atsparus | ⭐⭐⭐⭐ Puikus kasdienis patogumas |
| SMS patvirtinimo atsarginis variantas | Nulinis (nešifruoti SS7 signalai, lengvai perimami) | Didelė rizika | ⭐ Nerekomenduojama atsakingiems kodo prižiūrėtojams |
Terminalo Git darbo eigos: SSH raktai, PAT ir 2FA sąveika
Aktyvavę 2FA, programuotojai dažnai susiduria su terminalo klaidomis atlikdami įprastą kodo išsiuntimą (push):
fatal: Authentication failed for 'https://github.com/username/repo.git/'
Techninė priežastis: Git protokolas negali apdoroti interaktyvių 6 skaitmenų TOTP užklausų. Todėl GitHub visiškai panaikino paskyros slaptažodžių naudojimą HTTPS Git užklausoms, kai įjungtas 2FA.
Naudoja viešojo rakto kriptografiją (rekomenduojama: ed25519). SSH ryšiai autentifikuojami per vietinius kriptografinius privačiuosius raktus ir visiškai apeina žiniatinklio 2FA be jokių slaptažodžio užklausų.
Jei HTTPS protokolas yra privalomas, eikite į Settings ➔ Developer settings ➔ Personal access tokens ir sugeneruokite ribotos apimties prieigos raktą. Paprašius slaptažodžio terminale, įklijuokite PAT vietoj paskyros slaptažodžio.
SSH komitų pasirašymas prieš autentifikavimą: Atkreipkite dėmesį, kad SSH rakto naudojimas repozitorijų klonavimui ir siuntimui skiriasi nuo kriptografinio komitų pasirašymo. Galite naudoti tą pačią Ed25519 raktų porą komitų pasirašymui naudodami git config commit.gpgsign true ir git config gpg.format ssh, užtikrindami patvirtintus autoriaus ženklelius GitHub kartu su griežta 2FA prieigos kontrole.
Avarinis atkūrimas: užrakintų paskyrų atrakinimas be 2FA
Kritiniu atveju, kai praradote ir 2FA telefoną, ir atkūrimo kodų dokumentą, GitHub siūlo paskutinį kriptografinį gelbėjimosi ratą: SSH rakto parašo iššūkį (SSH Key Signature Challenge).
Patikrinkite savo GitHub TOTP slaptąjį raktą
Prieš patvirtindami nustatymus, išbandykite savo neapdorotą Base32 raktą su 2FA-Tool. Visi skaičiavimai atliekami vietiškai naršyklėje per Web Crypto be jokių duomenų perdavimų.
📚 Susiję saugumo gidai
Saugus 2FA paskyrų perkėlimas tarp išmaniųjų telefonų naudojant neprisijungusius QR kodus ir Cloud Sync.
Kaip atkurti prieigą Google, Microsoft, Steam, Binance, Apple ir Discord sistemose.
Nuo RFC 4226 iki RFC 6238: matematinis maišos sutrumpinimas, desinchronizacija ir pritaikymas saityne.