Спуфінг автора коміту

Спуфінг автора коміту

Будь-який коміт може назвати ваше ім'я. Довести авторство може лише підпис.

Що таке Спуфінг автора коміту?

Git дослівно записує ім'я й адресу автора з локальної конфігурації. Ніщо їх не перевіряє, тож будь-хто може робити коміти під чужим іменем, а поле автора — це заява, а не доказ. Лише підпис GPG або SSH прив'язує коміт до ключа, яким хтось володіє. Ви візьмете з історії репозиторію ім'я й адресу мейнтейнерки, задасте їх локально і внесете зміну, що скорочує порівняння підпису вебхука до восьми символів. Потім знайдете позначку «Не перевірено», увімкнете вимогу підписаних комітів без винятку для адміністраторів і побачите, як push відхиляється.

Що ви дізнаєтесь у Спуфінг автора коміту

Спуфінг автора коміту — Кроки навчання

  1. Гілка, у яку він уже може надсилати зміни

    Сьогодні Боб націлився на Voxmere — компанію з платіжної інфраструктури, де він працює підрядником. Контракт дає йому право надсилати (push) зміни в спільну гілку integration репозиторію ledger-core, і це нормально: саме там контриб'ютори збирають свою роботу. Натомість у нього немає способу змусити будь-кого довіряти цій роботі. Нічого з integration не йде в реліз, доки мейнтейнер не прочитає журнал гілки й не перенесе її в main.

  2. Клонуйте сервіс

    Боб клонує ledger-core — сервіс, через який у Voxmere проходять усі розрахунки, повернення коштів і звірки. Як підрядник він має доступ на читання, тож це звичайна робоча копія.

  3. Дістаньте імена з історії

    Бобу потрібні точні дані автора, під якими працює мейнтейнерка, і вгадувати їх чи видурювати фішингом не доведеться. Кожен коміт, створений будь-коли, містить ім'я й адресу свого автора, а журнал виведе їх на запит. Одне ім'я повторюється значно частіше за інші. Дара Вітлок — мейнтейнерка, чиї зміни проходять без суперечок, тож саме її ім'я варто позичити.

  4. Позичте ім'я

    Боб налаштовує локальну конфігурацію Git на ім'я Дари Вітлок. Тут немає ні запиту, ні перевірки, ні підтвердження: команда задає рядок, і Git цьому вірить.

  5. Позичте адресу

    Тепер електронна адреса. Вона важливіша за ім'я: Git-платформа зіставляє адресу автора коміту з обліковим записом користувача, тож відтепер коміти Боба відображатимуться з профілем Дари та її аватаром.

  6. Функція перевірки вебхука

    Боб відкриває файл, заради якого прийшов. Кожна платіжна подія, що доходить до реєстру, надходить як вебхук, підписаний платіжним процесором, і саме ця функція вирішує, чи підпис дійсний. Наразі вона виконує порівняння за сталий час і звіряє весь дайджест. Усе правильно.

  7. Скоротіть порівняння

    Боб змінює один рядок. Порівняння, як і раніше, виконується, користується тією самою допоміжною функцією і так само скидається на перевірку підпису. Просто воно зупиняється після перших восьми символів. Він подає це як оптимізацію швидкодії, бо саме так це й виглядає.

  8. Скільки коштують вісім символів

    Повний підпис — це 64 шістнадцяткові символи. Якщо порівнювати лише вісім, лишається 32 біти, тобто близько чотирьох мільярдів варіантів. Такий перебір терплячий зловмисник може довести до кінця, тоді як повне порівняння не піддалося б ніколи. Тоді кожен, хто має доступ до ендпоінта вебхука, зможе підписати будь-які платіжні події, і реєстр прийматиме кожну з них як справжню.

  9. Закомітьте під позиченим ім'ям

    Боб робить коміт. Він не передає жодного прапорця, нічого не перевизначає і не використовує спеціальну команду: Git просто ставить на коміт ім'я та адресу, які Боб задав кілька кроків тому.

  10. Перечитайте результат

    Боб перевіряє свою роботу. Коміт, який він щойно зробив, вказує автором Дару Вітлок, а поруч стоїть її адреса. У виводі немає нічого, що позначало б цей коміт як незвичний, бо з погляду Git нічого незвичного не сталося. Він записав те ім'я, яке йому дали.

Охоплення стандартів безпеки

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