- אכיפת החובה היא קבועה: מפתחים שלא יגדירו 2FA עד למועד היעד שנקבע ייחסמו מביצוע פעולות בממשק האינטרנט וסמכויותיהם במאגרי הארגון יישללו.
- קודי שחזור הם חבל ההצלה שלך: 16 קודי השחזור שנוצרו הינם לשימוש חד-פעמי. שמור אותם בכספת מוצפנת או בהדפסה פיזית קרה ומאובטחת באופן מיידי.
- סיסמאות Git אינן פועלות עוד: דחיפות Git בפרוטוקול HTTPS אינן יכולות לקבל קודים אינטראקטיביים בני 6 ספרות. עליך להשתמש במפתחות SSH או בטוקני גישה אישיים מוגדרי הרשאות (PAT).
- מוצא קריפטוגרפי אחרון: אם איבדת את הטלפון ואת הקודים, תוכל להוכיח בעלות על החשבון על ידי חתימה על אתגר אימות באמצעות המפתח הפרטי של SSH המקומי שרשמת מראש.
סקירת מדיניות חובת 2FA ב-GitHub וההיגיון האבטחתי שמאחוריה
מבחינה היסטורית, פשרת אישורי מפתחים עוררה פגיעויות הרסניות בשרשרת האספקה של התוכנה. תקריות מתוקשרות – כגון ההשתלטות על event-stream, ua-parser-js, ctx ו-colors.js ב-npm וב-PyPI – הוכיחו כי חשבון בודד שנגנב עלול לסכן מאות אלפי פרויקטים מסחריים ותשתיות קריטיות במורד הזרם.
תוקפים קוצרים אישורים באמצעות מאגרי פרטי התחברות גלובליים (Credential Stuffing), תשתיות דיוג (פישינג) ותלויות מפתחים נגועות בסוסים טרויאניים. מכיוון שמהנדסי תוכנה פועלים באופן שגרתי עם הרשאות root או ניהול לקוד המקור ולצינורות פריסת ה-CI/CD, אבטחת יוצרי הקוד (Committers) הפכה לעניין של בטיחות תשתיות בינלאומית.
בתגובה לכך, GitHub הקימה מדיניות חובה רב-שלבית כוללת הדורשת אימות דו-שלבי עבור כל יוצרי הקוד, מפיצי החבילות, משתמשי הארגונים (Enterprise) וחברי הארגונים:
- ממשק האינטרנט של GitHub נכנס למצב חסימה (Captive Gate Modal), האוסר על סקירת Pull Requests, הוספת תגובות ל-Issues וניהול מאגרים עד להשלמת הגדרת ה-2FA.
- ארגונים עסקיים האוכפים 2FA יפלטו אוטומטית חברים שאינם עומדים בדרישות, תוך שלילת הרשאות כתיבה וביטול זכויות גישה למאגרים באופן מיידי.
- צינורות עבודה אוטומטיים (Workflows), מפתחות הפצת חבילות npm והרשאות מאגר מפורטות מוקפאים עד לאימות תאימות אבטחת החשבון.
מדריך שלב אחר שלב: צימוד מאמת TOTP
למרות ש-GitHub תומכת ב-SMS, הודעות דחיפה לנייד ומפתחות אבטחה פיזיים, אפליקציית מאמת TOTP בתקן RFC 6238 (למשל Google Authenticator, Bitwarden, 2FA-Tool) מייצגת את תקן הזהב לאי-תלות בספקים ולאמינות מלאה ללא חיבור רשת:
שלב 1: ניווט להגדרות האימות
התחבר ל-GitHub. לחץ על תמונת הפרופיל שלך בפינה הימנית העליונה ➔ Settings. בסרגל הניווט השמאלי תחת "Access", בחר ב-Password and authentication.
שלב 2: סריקת קוד QR ושמירת הסוד הגולמי ב-Base32
GitHub מציגה קוד QR אופטי לצד קישור טקסט שבו נכתב: "enter this text code instead".
A3J5N2O9...). שמור אותה בתוך מנהל הסיסמאות המוצפן שלך. מחרוזת זרע אלפאנומרית זו מאפשרת לך לגזור מחדש טוקני אימות בכל מכשיר אם הטלפון שלך ייהרס או יאבד.
שלב 3: הזנת הקוד בן 6 הספרות לאישור
סרוק את הקוד באמצעות המאמת הנייד שלך. הזן את המספר המתחלף בן 6 הספרות המוצג במסך שלך לתוך שדה האימות של GitHub ולחץ על "Continue".
תקני ארכוב של קודי שחזור והיגיינה קריפטוגרפית
עם סיום צימוד ה-TOTP בהצלחה, GitHub מציגה מיד חלון מודאלי עם 16 טוקנים הקסדצימליים מופרדים במקפים (למשל d4a2b-98f12). סגירת חלון זה ללא גיבוי עמיד היא הגורם הנפוץ ביותר לנעילה קבועה של חשבונות מפתחים.
1. שימוש חד-פעמי בלבד: כל קוד שחזור מבוטל באופן בלתי הפיך לאחר השימוש הראשון בו במקום קוד TOTP.
2. סמכות עליונה: קוד שחזור עוקף חומרה שאבדה ומעניק גישה מיידית לחשבון.
3. גיבוב שרת באפס ידע (Zero-Knowledge): GitHub שומרת קודים אלה כגיבובים קריפטוגרפיים חד-כיווניים ובלתי הפיכים. מהנדסי התמיכה של GitHub אינם יכולים לשחזר או לקרוא את הקודים המקוריים שלך בשום נסיבות שהן!
אסטרטגיית אחסון קר מומלצת בשלוש שכבות:
הורד את github-recovery-codes.txt וצרף אותו לרשומת ה-GitHub שלך ב-1Password, Bitwarden או KeePassXC באמצעות מפתחות מאסטר הנגזרים באלגוריתם Argon2id.
שמור את קובץ הטקסט בכונן USB מוצפן באמצעות VeraCrypt הנשמר מנותק מרשתות מקומיות ומתוכנות סנכרון ענן.
הדפס עותק נייר פיזי, עטוף אותו בלמינציה נגד לחות ונעל אותו בתוך כספת ביתית פיזית להגנה מפני תוכנות זדוניות לגניבת מידע (Info-stealers).
שיטות אימות גיבוי: SMS מול מפתחות גישה (Passkeys) מול אפליקציית GitHub Mobile
GitHub מאפשרת להגדיר מנגנוני גיבוי משניים. עיין בניתוח האבטחה שלנו על פני וקטורי האימות הנוכחיים:
| שיטה | עמידות בפני דיוג (פישינג) | פגיעות להחלפת סים (SIM-Swap) | הערכה ותרחיש שימוש מעשי |
|---|---|---|---|
| Passkeys / מפתחות אבטחה FIDO2 | מוחלטת (הצמדת מקור ב-WebAuthn מונעת דיוג באמצעות פרוקסי) | חסין | ⭐⭐⭐⭐⭐ ההמלצה המובילה (YubiKey / Touch ID) |
| אפליקציית מאמת TOTP | בינונית (פגיעה לשרתי פרוקסי הפוכים בזמן אמת) | חסין | ⭐⭐⭐⭐ בסיס אוניברסלי (אפס תלות בקישוריות רשת) |
| אישור דחיפה ב-GitHub Mobile | בינונית (דורשת אימות מספר דו-ספרתי) | חסין | ⭐⭐⭐⭐ נוחות יומיומית מצוינת |
| אימות גיבוי באמצעות SMS | אפס (איתות SS7 לא מוצפן, ניתן ליירוט בקלות) | סיכון גבוה | ⭐ אינו מומלץ עבור מתחזקי פרויקטים בולטים |
תהליכי Git במסוף: מפתחות SSH, טוקני PAT ואינטראקציית 2FA
לאחר הפעלת 2FA, מפתחים נתקלים לעיתים קרובות בשגיאות מסוף מיידיות במהלך דחיפות קוד שגרתיות:
fatal: Authentication failed for 'https://github.com/username/repo.git/'
היגיון טכני: פרוטוקול התקשורת של Git אינו מסוגל לנהל דיאלוג אינטראקטיבי של קודי TOTP בני 6 ספרות. כתוצאה מכך, GitHub ביטלה לצמיתות את האימות באמצעות סיסמת חשבון גולמית עבור בקשות Git בפרוטוקול HTTPS כאשר 2FA מופעל.
משתמש בהצפנת מפתח ציבורי (מומלץ: ed25519). חיבורי SSH מאמתים באמצעות מפתחות קריפטוגרפיים פרטיים מקומיים ועוקפים לחלוטין את ה-2FA ברשת ללא בקשות אישורים חוזרות ונשנות.
אם תעבורת HTTPS הינה חובה, נווט אל Settings ➔ Developer settings ➔ Personal access tokens כדי ליצור טוקן עם הרשאות מוגדרות. כאשר תתבקש להזין סיסמה ב-CLI, הדבק את ה-PAT במקום סיסמת החשבון שלך.
חתימת קומיט ב-SSH מול אימות: שים לב שהשימוש במפתח SSH לשכפול ולדחיפת מאגרים שונה מחתימה קריפטוגרפית על קומיטים. באפשרותך להשתמש באותו צמד מפתחות Ed25519 כדי לחתום על קומיטים באמצעות git config commit.gpgsign true ו-git config gpg.format ssh, וליצור תגי מחבר מאומתים (Verified) ב-GitHub לצד בקרת גישה קפדנית של 2FA.
התאוששות מאסון: שחרור נעילת חשבונות ללא 2FA
במקרה של כשל קטסטרופלי שבו הטלפון עם ה-2FA איננו ומסמך קודי השחזור אבד, GitHub מציעה חבל הצלה קריפטוגרפי אחרון: אתגר החתימה באמצעות מפתח SSH (SSH Key Signature Challenge).
בדוק את סוד ה-TOTP של GitHub באופן מקומי
לפני שתתחייב להגדרה, בדוק את מחרוזת ה-Base32 הסודית הגולמית שלך ב-2FA-Tool. כל הגיבובים מחושבים מקומית באמצעות ממשק ה-Web Crypto של הדפדפן ללא שידור נתונים לשרת.
📚 מדריכי אבטחה קשורים
העברת חשבונות 2FA בין סמארטפונים בצורה בטוחה באמצעות קודי QR לא מקוונים וסנכרון ענן.
כיצד לשחזר גישה לחשבונות Google, Microsoft, Steam, Binance, Apple ו-Discord.
מ-RFC 4226 עד RFC 6238: קיטום גיבוב מתמטי, איבוד סנכרון ואימוץ בעולם האינטרנט.