DeftechSenior

Кібербезпека

Кібербезпека оборонної системи — це проєктні рішення, що лишають її надійною проти фінансованого, терплячого супротивника, який може тримати сам пристрій. Звичайна безпека застосунків припускає випадкового зловмисника по той бік мережевої межі й патч, що виходить у вівторок; тут межа зрештою падає повністю, а патч може йти до пристрою місяцями. Сторінка починається з чеклиста живучості на двадцять пʼять рядків; далі — модель загроз і те, що вона приймає, захоплений пристрій, ланцюг завантаження й шлях оновлення, ланцюг постачання, двадцять років служби, вісім задокументованих компрометацій і те, де практика перетворюється на театр.

Припущення проєкту
Пристрій утрачено
Одна втрата коштує
Один пристрій, не парк
Ваша найкраща мішень
Шлях оновлення

Чеклист живучості

Спершу весь чеклист — бо саме його має пройти дизайн-рев’ю до того, як архітектура застигне, і бо майже кожен рядок дешевий на першому пристрої й обертається доробкою в полі на тисячному. Він пронумерований, щоб на рядок можна було послатися: «ми не проходимо 3.3» — це задача, тоді як «історія з оновленнями якась слабка» — це настрій. Групи йдуть за системою крізь її життя: рішення про те, що захищати, сам пристрій, кожне завантаження й кожне оновлення, кожна залежність і кожна збірка, і роки, які система служить.

  1. 1.Модель загроз

    1. Її пишуть до дизайну, і її результат — обмеження, яким дизайн має відповідати, а не знахідки, підняті після нього.
    2. Вона називає активи — цей ключовий матеріал, цю історію переміщень, цю ідентичність оператора, цю здатність віддавати команди, — а не просто «систему».
    3. Вона називає супротивників за тим, що вони можуть: використати слабкі місця, знайдені іншими, знайти нові чи закласти власні у ваш ланцюг постачання.
    4. Вона письмово каже, від чого НЕ захищаються, і називає людину, яка має право прийняти цей ризик.
    5. Дизайн-рев’ю письмово фіксує, для чого система і для чого її не можна використовувати.
  2. 2.Кожен пристрій

    1. Кожен пристрій має власну ідентичність — видану на виробництві, обмежену тим, що йому дозволено, і відкликувану з парку за хвилини без дотику до інших пристроїв.
    2. Ключі живуть в апаратному модулі, що не віддає їх назовні, — захищеному елементі чи , — і ніколи у файлі чи в образі прошивки.
    3. Дані у спокої зашифровані, а ключ зберігається окремо від них; на борту лише робочий набір, а історія йде з першим же звʼязком.
    4. Продакшн-образ виходить із закритими портами налагодження, паролями за замовчуванням і сервісними акаунтами, і тест на образі, що справді виходить, це доводить.
    5. Кожен канал — команди, телеметрія й відео однаково — зашифрований і автентифікований з першої версії.
  3. 3.Кожне завантаження й кожне оновлення

    1. Ланцюг завантаження перевіряється від апаратного кореня довіри, тож замінена прошивка дає пристрій, що відмовляється працювати.
    2. Оновлення підписане, а підпис перевіряє завантажувач — ніколи не застосунок, який воно ось-ось замінить.
    3. Пристрій відмовляє в пониженні версії, тож ніхто не встановить торішню підписану збірку з торішньою діркою.
    4. Новий образ пишуть поруч із робочим, і якщо він не стартує справно, пристрій автоматично повертається до попереднього.
    5. Викочування поетапне, і жоден окремий обліковий запис, сервер чи людина не можуть доставити код або команди на весь парк одразу.
  4. 4.Кожна залежність і кожна збірка

    1. Кожна залежність має власника, записане джерело й причину існувати; додати її — рішення, а не натискання клавіші.
    2. Залежності зафіксовані й віддзеркалені, і жодна збірка нічого не тягне з публічного реєстру.
    3. Кожна збірка створює , тож «чи нас це зачіпає?» має відповідь за хвилини, а не за тиждень grep.
    4. Збірка відтворювана з репозиторію вихідного коду, а машини збірки експлуатують як продакшн.
    5. Ключі підпису лежать в , а не на ноутбуці чи у змінній ; підпис релізу потребує двох людей, і кожен підпис журналюється.
    6. Де фізично живуть вихідний код, збірки й ключі, перевіряють на відповідність експортному контролю, бо регіон репозиторію — це рішення про експорт.
  5. 5.Кожен рік служби

    1. Алгоритми стоять за інтерфейсом, і їх можна замінити оновленням, бо двадцять років переживають припущення, за яких їх обирали.
    2. Події безпеки журналюються у формі, яку тихо не відредагує той, у чиїх руках пристрій, і йдуть із першим звʼязком.
    3. Є опублікований спосіб повідомити про вразливість і названа людина, чия робота — на це відповісти.
    4. Ключі ротують за графіком, а виведений з експлуатації пристрій стирають за задокументованою процедурою, а не силами того, хто випадково його списує.

Модель загроз пишуть першою — і вона називає те, що приймає

У більшості софту модель загроз є артефактом рев’ю: дизайн існує, хтось його проходить, зʼявляється список знахідок, і кілька з них виправляють перед релізом. Такий порядок працює, коли знахідки малі й придатні до випуску. Він повністю провалюється, коли знахідка означає, що архітектура хибна, — бо на той момент саме на архітектурі всі й стоять. Тут модель пишуть до дизайну, і її результатом є набір обмежень, яким дизайн має відповідати, — рядок 1.1.

Придатна модель відповідає письмово на чотири питання, і четверте зазвичай пропускають. Що ми захищаємо — не «систему», а конкретні активи: цей ключовий матеріал, цю історію переміщень, цю ідентичність оператора, цю здатність віддавати команди (рядок 1.2). Хто намагається, з якими ресурсами й з яким терпінням (1.3). Що кожен із них здобуває, якщо вдасться. І від чого ми НЕ захищаємося — сказано явно (1.4), бо модель, що заявляє захист від усього, не ухвалила жодного рішення й буде тихо покинута першого ж разу, коли стане незручною.

«Фінансований і терплячий» потребує шкали, інакше це лишається настроєм. Найчастіше в цій галузі вживають шкалу зі звіту Ради оборонної науки США 2013 року про стійкі військові системи. Вона ділить супротивників на шість рівнів за тим, що вони можуть робити з вразливостями, а не за тим, хто вони, — і саме це рядок 1.3 просить записати в модель загроз.

Рівень супротивника (DSB, 2013)Що вони можутьЩо має припускати дизайн
I–IIВикористовують вразливості, знайдені кимось іншим, інструментами, які може отримати будь-хто.Результат вирішують налаштування за замовчуванням, швидкість патчів і відкриті сервіси. Тут стається більшість реальних інцидентів — зокрема випробування систем озброєння, які GAO переглядало у 2018 році.
III–IVМають досить коштів, щоб знаходити нові вразливості у вашій системі й писати власні експлойти.Патч не допоможе, доки ваду не знайдено. Припускайте, що один пристрій розкриють, і подбайте, щоб він не відкривав нічого іншого.
V–VIВкладають мільярди доларів і роки, щоб створювати вразливості, зокрема закладаючи їх у ваш ланцюг постачання.Жоден окремий захід їх не спинить. Модель каже це письмово, а дизайн обмежує, до чого дістає одна компрометація.

Звідси два висновки, і обидва дивують. Низ шкали — не формальність, яку відмічають дорогою до цікавих загроз: коли GAO у 2018 році переглянуло власні випробування систем озброєння Міноборони США, тестувальники заходили простими інструментами, через паролі за замовчуванням і незашифровані канали. А верх шкали — те місце, де рядок 1.4 виправдовує себе. Від супротивника, що може роками закладати слабке місце в постачальника, повністю не захищається ніхто. Модель, яка вдає, що захищається, не вирішила нічого; модель, яка це визнає, може принаймні вирішити, до чого дозволено дістати одній такій компрометації.

Ще одне питання належить до того самого документа, і саме його інженери найбільше хочуть передати комусь іншому. Дуже багато цього софту має подвійне призначення: той самий конвеєр детекції служить пошуково-рятувальним роботам, обліку тварин і моніторингу кордону. Це справжня властивість галузі — і водночас не дозвіл пропустити питання, для чого саме ця система. Рядок 1.5 ставить відповідь у дизайн-рев’ю, письмово, поруч із моделлю загроз: почасти тому, що призначення формує модель загроз, а почасти тому, що рішення, якого ніхто не записав, — це рішення, якого ніхто не ухвалював.

Припускайте, що пристрій опиниться в чужих руках

Саме це припущення відрізняє домен, і його варто формулювати як очікування, а не як катастрофу. Розгорнутий пристрій лишається без нагляду, іноді надовго, у місці, яке ви не контролюєте. Якась частка пристроїв не повернеться, а частину з них досліджуватиме хтось, у кого є час, інструменти й мотивація. Це не гіпотеза: у грудні 2011 року Іран показав по телебаченню майже неушкоджений американський розвідувальний дрон RQ-170, і уряд США попросив його повернути. Проєктувати під це — не песимізм, а різниця між утратою пристрою й утратою парку.

Звичайна безпека застосунків припускає, що зловмисник по той бік мережевої межі. Тут межа зрештою падає найповніше з можливого: залізо фізично у чужому володінні, з необмеженим часом, і запиту про допомогу надіслати не можна. Прочитати це як очікуваний третій стан, а не як катастрофу, — саме те, що робить проєктування розвʼязним, бо кожну з чотирьох гарантій нижче треба збудувати задовго до того дня. Ключі мають бути привʼязані до пристрою й непридатні поза ним, щоб їхнє видобування нічого не давало. Дані мають бути зашифровані у спокої, а ключ не лежати поруч. Облікові дані одного пристрою мають відкривати лише його — єдине рішення, що перетворює захоплений пристрій із плацдарму на втрату. І ланцюг завантаження має бути перевіреним, а оновлення — підписаними, щоб прошивку не можна було ні зчитати, ні замінити на таку, що дзвонить додому. Кожне з цього ухвалюють на етапі проєктування. Того дня вирішувати вже нічого — і в цьому вся суть.

Третя гарантія на схемі вирішує розмір утрати, і це рішення архітектурне, а не криптографічне. Якщо кожен пристрій тримає той самий спільний секрет або облікові дані, що автентифікують його як загального учасника мережі, то один пристрій, досліджений без поспіху, дає доступ до всього. Якщо ж кожен пристрій має власну ідентичність, обмежену тим, що саме йому дозволено, а парк може її відкликати, та сама подія коштує вам одного пристрою. Це рядок 2.1, і схема нижче малює обидва наслідки поруч.

Захоплений пристрій досліджують без поспіху, і які б облікові дані він не тримав, їх зрештою зчитають. Скільки це коштуватиме, вирішено задовго до того — тим, що цим обліковим даним дозволено відкривати. Якщо кожен пристрій несе той самий секрет на весь парк, один зчитаний пристрій автентифікується як будь-який, і втрата одного стає втратою парку: мережа не може відрізнити копію в руках супротивника від справжнього учасника. Якщо ж кожен пристрій має власну ідентичність, видану на виробництві й обмежену тим, що йому дозволено, та сама подія коштує рівно одного пристрою: парк його відкликає, а решта двадцять три працюють далі. Алгоритми з обох боків однакові. Різниця цілком архітектурна, і в неї є дедлайн: додати ідентичність на пристрій заднім числом означає торкнутися кожного пристрою, що вже в полі, — тому потім її майже ніколи не додають.

Ліва панель — не уявний експеримент. У 2016 році ботнет Mirai розрісся приблизно до 600 000 камер і роутерів, перебираючи список із близько шістдесяти заводських паролів, бо цілі продуктові лінійки виходили з тим самим паролем, — спільний секрет парку в найчистішому вигляді. Відтоді регулювання наздогнало найслабшу версію рядка 2.1: з квітня 2024 року Велика Британія заборонила універсальні паролі за замовчуванням на споживчих пристроях. Оборонній системі не має знадобитися закон, щоб дотягнути до планки, яку тепер тримають споживчі камери.

Що тримається після втрати

  • Індивідуальна ідентичність пристрою, відкликувана з парку без дотику до інших (2.1).
  • Ключі в апаратному модулі, що не віддає їх назовні, і стирання при розкритті корпусу (2.2).
  • Дані зашифровані у спокої, на пристрої лише робочий набір, історія вже вивантажена (2.3).
  • Перевірений ланцюг завантаження: заміна прошивки дає пристрій, що відмовляється запускатися (3.1).

Що перетворює одну втрату на всі

  • Спільний секрет або обліковий запис на весь парк: один пристрій автентифікується як будь-який.
  • Ключі у файлі на файловій системі — тоді видобування є операцією копіювання, а не атакою.
  • Повна локальна історія всього, де пристрій був і що бачив.
  • Порт налагодження чи сервісний акаунт, лишений увімкненим, бо був зручним на розробці.

Ланцюг довіри — і шлях оновлення як ваша найкраща мішень

Кожен пристрій потребує способу отримувати новий код, і цей механізм варто прочитати прямо: це єдиний компонент із владою над усім парком. Хто його контролює, той контролює кожен пристрій одразу, не торкаючись жодного. Тому шлях оновлення — найпривабливіша ваша мішень, і саме тому існує група 3 чеклиста.

Захист починається при ввімкненні, з ланцюга довіри. Boot ROM — це код, закріплений у кремнії на виробництві, з хешем єдиного ключа, якому він довіряє; жодне оновлення не може його змінити, і саме тому йому можна довіряти. Він перевіряє підпис завантажувача до запуску, завантажувач перевіряє ядро, а ядро — застосунок. Замініть будь-яку ланку на щось непідписане — і пристрій відмовиться працювати, а не запустить заміну, — рядок 3.1. Той самий ланцюг вирішує, де перевіряють оновлення: у завантажувачі, нижче за застосунок, який замінюють, бо застосунку не можна доручити перевіряти власного наступника, — рядок 3.2.

Пристрій, що перевіряє власне ПЗ, мусить починати з місця, якому не можна збрехати. Таке місце — Boot ROM: код, закріплений у кремнії на виробництві, з хешем ключа, якому він довіряє. Він перевіряє підпис завантажувача до запуску, завантажувач перевіряє ядро, ядро — застосунок. Кожна стрілка — це перевірка підпису, а потім передача керування, тож заміна будь-якої ланки на щось непідписане дає пристрій, що відмовляється працювати, а не такий, що запускає заміну. Та сама логіка вирішує, де перевіряють оновлення. Не застосунок, який замінюють, а завантажувач ставить образу три питання: чи дійсний підпис, чи версія не менша за записану в лічильнику, який пристрій не відмотує назад, і чи новий образ стартує справно. Образ пишуть у другий слот, тож провал третьої перевірки повертає до недоторканого першого, а не лишає «цеглину». Сам ROM — єдина ланка, до якої не дістане жодне оновлення, тому алгоритм і ключ, яким він довіряє, — це рішення на весь строк служби пристрою.
Властивість шляху оновленняЩо вона зупиняєБез неї
Підпис перевіряє завантажувач (3.2)Образ, який ніхто не дозволяв.Хто дістався сервера оновлень, той дістався кожного пристрою: NotPetya пішов як звичайне оновлення M.E.Doc.
Лічильник версій, що не йде назад (3.3)Торішній підписаний образ із торішньою діркою.Кожен патч скасовують, перевстановивши версію, яку пристрій досі приймає як справжню.
Другий слот і перевірка справності (3.4)Поганий образ, що перетворює пристрій на «цеглину».Невдале оновлення в полі потребує технічного фахівця чи пристрою на заміну, а в полі часто немає ні того, ні іншого.
Поетапне викочування, жодного шляху до всіх (3.5)Одну помилку чи один викрадений обліковий запис, що дістає до всього одразу.Поганий реліз має рівно той самий обсяг, що й успішна атака, а успішна атака — обсяг усього парку.

Випадок Viasat варто читати повільно, бо в ньому нічого не підробили. 24 лютого 2022 року нападники зайшли в сегмент керування супутникової мережі через хибно налаштований -пристрій. Потім вони скористалися власною функцією керування мережі й надіслали команди десяткам тисяч модемів одночасно; вайпер переписав їхню флеш-памʼять, і модеми так і не повернулися. Кожна перевірка на кшталт «чи це справжня наша команда?» відповіла б «так». Допомагає рядок 3.5: жоден окремий обліковий запис, сервер чи людина не мають діставати до всього парку за один крок, щоб навіть справжній канал у чужих руках натрапив на етап, який не можна оминути.

Кожна залежність — рішення, у якого є власник

Фінансований супротивник шукає найдешевший вхід, і в добре збудованому продукті найдешевшим входом рідко є сам продукт. Це залежність, яку ніхто не переглядає; машина збірки, яку ніхто не зміцнював; ключ підпису, до якого дотягується забагато людей. Схема прикріплює задокументовану атаку до кожної ланки між комітом і пристроєм, і суть у закономірності: жодна з шести не зламала криптографію продукту.

Найдешевший вхід у добре збудований продукт рідко веде через сам продукт. Він веде через ланку конвеєра з більшим охопленням і меншою увагою, і для кожної ланки тут є задокументований випадок. Код і CI: у 2021 році витік облікових даних дав змогу змінити скрипт завантаження Codecov, який два місяці вивозив секрети CI клієнтів. Залежності: у 2024-му мейнтейнер, що два роки заробляв довіру, випустив бекдор у xz Utils, знайдений випадково, до того як він потрапив у стабільні релізи основних дистрибутивів Linux. Збірка: у 2020-му шкідливе ПЗ на сервері збірки SolarWinds вбудувало бекдор в Orion, який підписали й доставили приблизно 18 000 клієнтів. Підпис: драйверам Stuxnet довіряли, бо вони мали сертифікати, викрадені у двох виробників заліза. Доставка: у 2017-му NotPetya пішов через сервер оновлень M.E.Doc, української бухгалтерської програми. Команди парку: у 2022-му нападники дісталися мережі керування Viasat і її ж командами стерли десятки тисяч модемів. Жодна з шести не зламала криптографію продукту — кожна її обійшла. Зелений ряд показує рядок чеклиста, що покриває кожну ланку.
РядокЩо він відвертаєВипадок, що це показує
4.1 — власник і джерело для кожної залежностіДовірену людину, що стає атакою.xz Utils, 2024: близько двох років терплячих внесків купили права мейнтейнера.
4.2 — зафіксовано й віддзеркаленоПублічний реєстр, що вирішує, що потрапить у вашу збірку.Dependency confusion, 2021: схожі за назвою публічні пакети дослідника потрапили у внутрішні збірки понад 35 компаній.
4.3 — SBOM із кожної збіркиТиждень grep після кожного оприлюднення.Log4Shell, грудень 2021: організації тижнями зʼясовували, чи є одна бібліотека журналювання всередині їхніх продуктів.
4.4 — відтворювано, а збірку експлуатують як продакшнЧистий репозиторій, що дає брудний бінарник.SolarWinds, 2020, і xz, чий архів релізу відрізнявся від git-репозиторію.
4.5 — ключі в HSM, двоє людей для підписуКомпрометацію CI, що перетворюється на сервіс підпису.Codecov, 2021, що два місяці вивозив секрети CI клієнтів; викрадені сертифікати Stuxnet.

Рядок 4.4 важить більше, ніж здається. І в SolarWinds, і в xz репозиторій вихідного коду був чистим: шкідливий код існував лише в тому, що давала збірка, або в архіві, з яким виходив реліз. Відтворювана збірка — така, де будь-хто може перезібрати артефакт із репозиторію й отримати ті самі байти, — перетворює «бінарник відповідає коду» з віри на перевірку, і це єдина перевірка на цій сторінці, що спіймала б будь-який із двох випадків до релізу.

Рядок 4.6 юридичний, а не технічний, і знати його варто до того, як берете роботу, а не після. Значна частина цього софту підпадає під експортний контроль, а це обмежує, хто може тримати вихідний код, де його можна збирати й кому можна казати, що він робить, — правило, яке дістає навіть до таких звичайних рішень, як регіон хмари, у якому живе репозиторій. Правило так само звʼязує ваших постачальників, як і вас. У 2017 році Австралійське управління радіотехнічної розвідки (ASD) описало зловмисника, що місяцями сидів усередині аерокосмічного субпідрядника на 50 людей і виніс близько 30 ГБ даних, зокрема матеріали під експортним контролем щодо F-35 і P-8 Poseidon. Сервіси, відкриті в інтернет, там досі мали паролі за замовчуванням: admin і guest.

Двадцять років служби

Десять–двадцять років служби тут норма, і це змінює рішення, які здаються усталеними. Кожна залежність переживе інтерес своїх мейнтейнерів до неї. Кожен алгоритм переживе припущення, за яких його обирали. А «потім перепишемо» стає обіцянкою, яку вам згадають. Група 5 чеклиста — те, що тримає систему захищеною на пʼятнадцятому році, коли в команді вже немає нікого з тих, хто її проєктував.

Найконкретніше це видно в криптографії. NIST опублікував перші постквантові стандарти — FIPS 203, 204 і 205 — у серпні 2024 року, а настанова NSA CNSA 2.0 просить системи національної безпеки віддавати перевагу квантовостійким підписам для ПЗ і прошивок до 2025 року й використовувати лише їх до 2030-го. Пристрій, випущений сьогодні з однією схемою підпису, закріпленою в Boot ROM, служитиме й після цієї дати. Відповідь — рядок 5.1: алгоритми за інтерфейсом, замінні оновленням, — з одним жорстким винятком, під який варто планувати: перевірку в самому ROM оновити не можна, тож вибір, зроблений там, має враховувати весь строк служби — наприклад, чип, що тримає кілька кореневих ключів і вміє відкликати один із них.

  • Криптографія, яку можна замінити (5.1)

    Алгоритми за інтерфейсом і узгоджувані, а не зашиті, тож оновлення може перевести парк на новий. Усе, що вище за ROM, має бути замінним саме так.

  • Логи, що переживають пристрій (5.2)

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

  • Спосіб отримати погану новину (5.3)

    Опублікований контакт, політика для повідомлень ззовні й названа людина, що відповідає. Дослідники щось знаходять; питання лише в тому, чи можуть вони сказати вам, чи мусять сказати комусь іншому.

  • Списання — це процедура (5.4)

    Пристрій, що виходить зі служби, досі тримає ключі й дані. Його стирання — задокументований крок із записом, а ідентичність відкликають у парку того ж дня, а не коли хтось помітить.

Вісім компрометацій — і рядок, що покриває кожну

Оборонні програми рідко публікують свої компрометації, тож більшість цих випадків цивільні, і сторінка каже це відкрито: механізми переносяться один в один. Два походять із самої оборонки — відеоканали Predator і перевірка випробувань систем озброєння від GAO, — а один ударив по військовому звʼязку в перший день війни. Кожен несе рядок чеклиста, що його покрив би.

ВипадокЩо сталосяРядок, що це покриває
Відеоканали Predator, Ірак, 2009Американські посадовці підтвердили, що бойовики дивилися відеоканали дронів Predator за допомогою SkyGrabber — готової програми за $26, призначеної витягати файли із супутникового інтернету; файли знайшли в липні 2009 року на ноутбуці захопленого бойовика. Про ваду знали з 1990-х, припускаючи, що ніхто не знатиме, як нею скористатися, а виправлення означало доробку парку, що вже літав.2.5. Канал вважали приватним, бо він був маловідомим.
Stuxnet, виявлено 2010Шкідливе ПЗ, створене, щоб пошкодити центрифуги в Натанзі, потрапило в ізольовану мережу на змінних носіях. Його драйвери ставилися у Windows без попереджень, бо були підписані справжніми сертифікатами, викраденими у двох тайванських виробників заліза — Realtek і JMicron.4.5 і 1.3. Ключ підпису вартий рівно стільки, скільки його захист, а супротивник рівня V–VI планує на роки вперед.
Mirai, жовтень 2016Ботнет зріс приблизно до 600 000 камер, роутерів і реєстраторів, заходячи на них зі списком із близько шістдесяти заводських логінів і паролів. 21 жовтня 2016 року він поклав DNS-провайдера Dyn, а з ним і значну частину вебу для користувачів на східному узбережжі США. З квітня 2024 року Велика Британія зробила виправлення законом: жодних універсальних паролів за замовчуванням.2.1 і 2.4. Один обліковий запис на всю продуктову лінійку — це один запис до всієї лінійки.
NotPetya через M.E.Doc, червень 2017Нападники, що контролювали сервер оновлень M.E.Doc — бухгалтерської програми, якою користувалися по всій Україні, — розіслали клієнтам оновлення з бекдором і 27 червня 2017 року запустили через нього вайпер. З тих мереж він розійшовся світом — серед жертв Maersk і Merck — зі збитками в мільярди доларів. Кожен клієнт його встановив, бо воно прийшло власним каналом оновлень виробника.3.2 і 3.5. Хто тримав сервер оновлень, той тримав усіх клієнтів — одразу.
Випробування систем озброєння США, GAO, жовтень 2018Переглянувши власні звіти Міноборони США про випробування, GAO встановило, що тестувальники захоплювали керування системами озброєння в розробці простими інструментами й здебільшого лишалися непоміченими. Одна команда отримала початковий доступ за годину, а повний контроль — за день; інша вгадала пароль адміністратора за девʼять секунд; кілька систем працювали на комерційному ПЗ з незміненим паролем за замовчуванням. Посадовці програм вважали свої системи захищеними й відкидали частину результатів як нереалістичні.2.4 і 1.1. Безпека була рев’ю після дизайну, і з рев’ю сперечалися.
SolarWinds Orion, грудень 2020Шкідливе ПЗ на сервері збірки SolarWinds підміняло файл вихідного коду під час компіляції, тож збірки Orion несли бекдор, якого в репозиторії не було. Результат підписали справжнім сертифікатом компанії й доставили як звичайне оновлення; його встановили до 18 000 клієнтів, серед них федеральні відомства США.4.4. Репозиторій був чистим; різницю показала б лише перезбірка, порівняна з релізом.
Viasat KA-SAT, лютий 2022Уранці, коли почалося повномасштабне вторгнення в Україну, нападники, що зайшли в мережу керування Viasat через хибно налаштований VPN-пристрій, надіслали легітимні команди керування десяткам тисяч супутникових модемів одночасно, і вайпер стер їхню флеш-памʼять. Постраждав і військовий звʼязок України; у Німеччині 5 800 вітряків утратили віддалений моніторинг. Viasat відвантажила близько 30 000 модемів на заміну.3.5. Руйнівні команди були власними командами мережі, і один шлях діставав до всього парку.
xz Utils, березень 2024Учасник, що близько двох років заробляв права мейнтейнера бібліотеки стиснення, якою користується весь Linux, випустив бекдор, націлений на входи через SSH. Шкідливий крок збірки був в архівах релізу, а не в git-репозиторії. Андрес Фройнд, інженер Microsoft, знайшов його 29 березня 2024 року, бо вхід став приблизно на пів секунди повільнішим, — до того як бекдор потрапив у стабільні релізи основних дистрибутивів.4.1 і 4.4. Атакою була довірена людина, а артефакт відрізнявся від вихідного коду.

Де це перетворюється на театр

Чесне обмеження — це верх шкали супротивників і людина, що вже всередині. Супротивник, який може роками закладати слабке місце у ваш ланцюг постачання, чи інсайдер із законними правами підпису пройде повз заходи, розраховані на всіх інших. Апаратний модуль, що не віддає ключ, підвищує ціну його видобування, але не робить її нескінченною для когось із лабораторією й часом. Жодне рішення того, хто будує, цих загроз не прибирає. Рішення на цій сторінці їх обмежують: ідентичність на пристрій обмежує те, що відкриває один видобутий ключ, поетапне викочування — те, куди дістає один поганий реліз, а логи, що переживають пристрій, роблять компрометацію чимось, що можна знайти згодом. Сторінка свідомо зупиняється тут. Як розгорнуту систему моніторять, латають і захищають день у день — це експлуатація, інша дисципліна з власною літературою.

  • Модель загроз, що захищає від усього й нічого не приймає, — тож після першого дедлайну до неї ніхто не заглядає.
  • Рев’ю безпеки, призначене після того, як архітектура застигла, де зі знахідками сперечаються, а не виправляють.
  • «Фізично ізольована» в проєктному документі — і USB-флешка в наземній станції.
  • SBOM, що генерується на кожній збірці й нікому не потрібен.
  • «Зашифровано у спокої» — з ключем у тій самій флеш-памʼяті, що й дані.
  • Підписані релізи, підписані ключем, що живе у змінній CI.
  • Тест на проникнення перед першою поставкою — і більше жодного за двадцять років.
  • Поетапне викочування, усі етапи якого стартують протягом однієї години.
  • Скринька для повідомлень про вразливості, яку ніхто не читає, — тож дослідники повідомляють деінде.

Коли це застосовувати

Застосовуйте, коли

  • Як дизайн-рев’ю до того, як архітектура застигне, — двадцять пʼять рядків угорі, — бо знахідка на пізньому етапі є переписуванням, а не виправленням.
  • Для будь-якого пристрою, що лишиться без нагляду там, де ви не контролюєте, — це і є припущення про захоплення.
  • Коли проєктуєте шлях збірки, підпису й оновлення — компоненти з владою над усім парком.
  • Для довгоживучих систем, де замінна криптографія та інвентар залежностей окупаються кількаразово.

Уникайте, коли

  • Як заміну моделі загроз, специфічній для вашої системи: жодна сторінка її не дасть.
  • Як привід захищатися від усього: виходить документ, яким ніхто не користується, і жодних рішень.
  • Як настанову з операційної безпеки: ця сторінка про рішення того, хто будує, а не про те, як систему експлуатують.
  • Там, де пристрій ніколи не виходить із фізичного контролю, а парк достатньо малий, щоб оновити його за день.

Джерела й метод

На чому стоїть ця стаття

  • 17 джерел
  • 10 задокументованих збоїв
  • Перевірено 13 жовтня 2026 р.

Збої, на яких вчиться стаття

компрометації з таблиці кейсів

Дослідження з Claude. Пошук і звірку першоджерел зроблено з Claude (Anthropic). Відбір, текст і перевірку фактів — редакція Anatomy of IT Product.

Було корисно?

Поділіться з тим, хто працює над тією ж задачею.