Шкідливі запити на вилучення
Виправлення справжнє. Файл, якого він також торкається, не є.
Що таке Шкідливі запити на вилучення?
Зловмисний запит на отримання атакує огляд, а не код. Зміна невелика, опис корисний, а одна редакція міститься у файлі, опис якого ніколи не згадується. Ви надішлете його самостійно: справжнє виправлення нестабільного тесту, а також прихований рядок у сценарії розгортання, який надсилає кожну змінну CI на сервер, яким ви керуєте. Ви переглядатимете його як супроводжувач, читатимете кожен змінений файл замість того, щоб довіряти резюме. Тоді ви зробите блокування структурним за допомогою CODEOWNERS, необхідної перевірки власника коду та обмежень на те, які запити на відгалуження можуть виконуватися.
Що ви дізнаєтесь у Шкідливі запити на вилучення
- Розпізнайте червоний прапорець зловмисного запиту на отримання: редагування файлу, яке не має нічого спільного з тим, що заявляє зміна, приховане серед законних шматків різниць
- Зрозумійте, чому недостатньо прочитати опис запиту на отримання, і чому рецензент повинен відкрити та прочитати повну різницю кожного зміненого файлу
- Сприймайте редагування поза межами розгортання, створення або сценаріїв CI як сигнал, який вимагає більш ретельного, більш скептичного розгляду
- Застосуйте посилення політики перевірки: CODEOWNERS для конфіденційних файлів, потрібне схвалення від кількох рецензентів і обмеження щодо того, які запити на відгалуження можуть виконуватися
- Зрозумійте, чому запити на відгалуження від форків виходять за межі довіри проекту та заслуговують на додаткову перевірку, перш ніж довіряти їх коду
Шкідливі запити на вилучення — Кроки навчання
-
Збільште розмір проекту
Сьогодні Боб націлений на Fennroot, проект інструментів розробника з відкритим кодом, який приймає запити на отримання від будь-кого. Він починає там, де будь-який учасник, у загальнодоступному репозиторії для Harrow, інструменту створення проекту. Відкритий проект — це відкриті двері: будь-хто може розгалужити його, змінити та відкрити запит на отримання. Боб тут не для того, щоб допомогти. Він хоче, щоб його код був об’єднаний, і єдине, що йому заважає – перевірка зайнятого супроводжуючого.
-
Вилка і клон
Боб розгалужує репозиторій до свого власного облікового запису та клонує розгалуження локально, щоб він міг внести свої зміни та відправити їх назад як запит на отримання. Його план простий: включити одну справді корисну зміну як прикриття та сховати другу, не пов’язану з нею.
-
Обкладинка і мішень
Прикриття Боба справжнє: він виправляє справді нестабільний повторний тест, такий невеликий внесок проект вітає. Ця зміна є чесною та корисною, і в цьому вся суть. Це робить запит на вилучення рутинним. Його справжньою метою є зовсім інший файл. Він відкриває сценарій розгортання, який не має нічого спільного з жодним тестом, і читає його чисто.
-
Посадіть бекдор
Боб додає один рядок до сценарію розгортання. Це виглядає як нешкідливий фрагмент телеметрії збірки, але він надсилає кожну змінну середовища на сервер, яким він керує. Сценарій розгортання виконується в CI проекту, де ці змінні містять ключі розгортання та маркери реєстру. Один рядок, у файлі запит на отримання ніколи не згадується. Ось і вся атака.
-
Похований на очах
Рядок читається як щось, що міг би додати інженер збірки, і він знаходиться серед звичайних кроків розгортання. Нічого в цьому не кричить про атаку, саме тому він витримує швидке знежирення.
-
Зафіксуйте обидві зміни
Боб ініціює та фіксує обидві зміни разом: справжнє тестове виправлення та рядок сценарію розгортання в одному коміті. Зібрані разом, злісна зміна їде на спині чесної.
-
Підштовхнути до вилки
Боб штовхає гілку до розвилки. Поштовх надходить до його власної копії сховища, а платформа відповідає посиланням, щоб відкрити запит на отримання від Fennroot.
-
Відкрийте запит на отримання
Боб відкриває запит на отримання до репозиторію Fennroot. Він пише заголовок і опис, які розповідають лише про нестабільний тест, і ніколи не згадують сценарій розгортання. Тестове виправлення - це історія, яку він хоче, щоб рецензент прочитав. Бекдор повністю виключено з нього.
-
Підштовхнути для об’єднання
Відкривши запит на отримання, Боб додає дружній коментар, який підштовхує для швидкого злиття. Він залишає його на тестовому рядку, тому погляд рецензента зупиняється там, а не на сценарії розгортання. Невеликий соціальний тиск, щоб швидко схвалити, поки хтось не прочитає надто уважно.
-
Перевірка знань
Ви щойно спостерігали, як бекдор натрапив на запит на вилучення за справжнім виправленням. Зафіксуйте, чому це небезпечно.
Охоплення стандартів безпеки
CWE
- CWE-494 Download of Code Without Integrity Check
- CWE-345 Insufficient Verification of Data Authenticity
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