(You can read this text in English at our corporate blog).
Безпека ланцюга постачання комп’ютерних технологій ніколи не була така актуальна. Згідно зі звітом ENISA Threat Landscape 2021, ланцюги постачання (Supply Сhain Attacks) знаходяться на 9 місці серед найбільш поширених векторів кібератак. Це може здаватися несуттєвим, оскільки атаки такого рівня притаманні так званим APT (хакерським групам, спонсорованим державами), які рідко загрожують невеликим приватним компаніям. Однак таке мислення вже виявлялося хибним, оскільки арсенал APT регулярно перетікає до банд кіберзлочинців.
Гаразд, що таке supply-chain атака і чому це важливо? Якщо коротко, ланцюжок постачання це довіра. А атака на ланцюг постачання — це атака, яка експлуатує певну довіру. Наведу кілька прикладів.
Всі ми довіряємо нашим постачальникам комп’ютерного обладнання, тому що в наш час просто нереально перевірити всі компоненти апаратного забезпечення. Ось чому апаратні бекдори в материнських платах SuperMicro, про які повідомив Bloomberg, стали свого часу великою новиною. Крім того, ми всі довіряємо нашим постачальникам операційних систем, оскільки їхній код настільки близький до апаратного забезпечення, що без нього ми буквально не здатні нічого робити з комп’ютерами. Ось чому російська хакерська група Nobelium, яка скомпрометувала IT-постачальника SolarWinds і купу їхніх клієнтів, включно з Microsoft, потрапила у світові новини.
Прикладне програмне забезпечення також може бути вразливим до атак на ланцюг постачання. Хоча вразливості додатків і не такі приховані, як вади апаратного забезпечення та операційної системи, вони також завдають великої шкоди. Особливо, якщо вразливі програми популярні та користувачі запускають їх з правами адміністратора. Прикладом є кібератака NotPetya: російська атака на Україну, яка вийшла з-під контролю, вразила тисячі компаній по всьому світу та завдала безпрецедентної фінансової шкоди. А пам’ятаєте шкідливі пакети NPM, що майнять криптовалюту, які з’являються в новинах майже щотижня?
Апаратне забезпечення, мікропрограми, системне та прикладне програмне забезпечення, бібліотеки та фреймворки розробки та хмарна інфраструктура — не єдині сфери, куди можуть вразити атаки на ланцюжок постачання комп’ютерних систем. Найприхованішим та найвишуканішим місцем, де може існувати вразливість ланцюга постачання, є компілятор. Це інструмент, який перекладає програмне забезпечення з коду, що написала людина, у низькорівневі машинні інструкції. І є неймовірно розумні атаки, які цілять саме сюди.
Наприклад, нещодавно виявлений недолік у кількох компіляторах, що підтримують Unicode, дозволяє зловмисникові вбудувати бекдор у фрагмент коду. Після чого інший розробник нижче по ланцюгу постачання може використати цей бекдор. Ніколас Баучер і Росс Андерсон виявили вразливість у компіляторах C, C++, C#, JavaScript, Java, Rust, Go і Python. Варіанти атаки вже відстежуються як CVE, і опублікована дослідницька стаття, в якій все детально описано. Звичайно, як і будь-яка значна вразливість у наші дні, вона має власний бренд – Trojan Source – і вебсайт. Я закликаю вас відвідати його і подивитися приклади атак на першій сторінці: це просто вражає.
Атаки ланцюга постачання можливі через довіру до постачальників. Сьогодні довіра в ІТ неминуча, оскільки жодна організація, за рідкісним винятком військових і розвідувальних агентств, не може дозволити собі перевірити весь код та обладнання, яке вони використовують. Кажуть, довіряй, але перевіряй. Але комп’ютерна індустрія занадто складна, щоб перевірити геть усе, то що ж нам робити? Приклад Trojan Source показує, що навіть ручний огляд вихідного коду експертом з безпеки може пропустити такі невидимі помилки. Що ж тоді казати про інструменти статичного аналізу, які самі можуть бути скомпрометовані подібним чином? Все це виглядає як замкнене коло, з якого немає виходу. Чи є?
Я не впевнений, але може бути. Фаталістичний підхід до кібербезпеки іноді виглядає занадто драматично з простої причини. Багато експертів вимірюють безпеку, порівнюючи рівень захисту AS-IS з гіпотетичним, ідеальним баченням майбутнього, як правило, галузевим стандартом. Як на мене, ця точка зору є дещо спрощеною; я віддаю перевагу вимірюванню прогресу, а не недоліків. «Невідповідність» між сьогоденням і бажаним майбутнім може завжди бути відмінною від нуля, але насправді у будь-якій діяльності важливі зміни та їхня траєкторія. Іншими словами, якщо зусилля з безпеки призводять до змін, і якщо ці зміни на краще, це означає, що ми досягаємо прогресу.
Отже, щоб обробити вразливості довіри та ланцюгів постачання, спочатку подумайте, чому це вас взагалі турбує. Чи існує версія майбутнього, де всі довіряють один одному? Де кожна людина та організація заслуговують абсолютної довіри? Знаючись трохи на людській психології, я сильно в цьому сумніваюся. Тоді навіщо порівнювати стан речей із цією утопією? Чому б замість цього не досягти поступового прогресу, визначивши надійні елементи ланцюга постачання – постачальників, програмне забезпечення та системи – і не зосередившись на локальних вдосконаленнях, що зберігають та підтримують цю довіру? Так, я знаю, ми дали шанс на майбутнє з нульовою довірою Blockchain-технологіям, і подивіться, що вийшло.
Це підводить мене до висновку. Будь-які відносини в цьому світі передбачають певний рівень довіри. Він може варіюватися в залежності від культурних особливостей, але певний рівень довіри завжди є. Для будь-якої співпраці дуже важливо перевірити й зберегти довіру, і для цього в нас є напрацювання. У безпеці програмного забезпечення це здебільшого застосування інструментів, компонентів і методів, які виявилися безпечними та надійними раніше. Але за замовчуванням не існує такого поняття, як довіра: безпека не з’являється раптово, нізвідки. Це робить лише складність (тобто небезпека).