DeftechSenior

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

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

Припущення проєкту
Пристрій утрачено
Модель загроз —
Пишеться першою
Ваша найкраща мішень
Шлях оновлення

Модель загроз пишуть першою, і вона обмежує фічі

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

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

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

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

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

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

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

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

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

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

Ланцюг постачання і шлях оновлення як мішень

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

  • Знайте, що у збірці. Інвентар залежностей, згенерований автоматично під час збірки, — щоб питання «чи нас це зачіпає» мало відповідь за хвилини, а не за тиждень grep.
  • Зробіть збірку відтворюваною, щоб артефакт можна було перезібрати з коду й порівняти. Без цього «бінарник відповідає коду» є вірою, а не перевіркою.
  • Ставтеся до системи збірки як до продакшну. Вона тримає ключі підпису й виробляє те, чому всі довіряють; агент збірки, куди будь-хто може подати задачу, є сервісом підпису, яким будь-хто може скористатися.
  • Підписуйте артефакт і перевіряйте на пристрої, причому перевірка має бути в ланцюзі завантаження, а не в застосунку, який замінюють.
  • Викочуйте поетапно з автоматичним відкатом: погане оновлення, що дійшло до всіх пристроїв одночасно, за наслідками не відрізняється від успішної атаки.
  • Змусьте пристрій відмовляти в пониженні версії — інакше супротивник просто попросить його встановити торішню збірку з уже виправленою вразливістю.

Що це змінює у звичайній розробці

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

  • Ідентичність на пристрій, з першого дня

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

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

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

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

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

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

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

Антипатерни, які варто назвати

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

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

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

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

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

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

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

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