SkillGridИзучай computer science на практике

Модель угроз: что ты защищаешь?

Безопасность начинается со списка, а не с инструмента: твои активы, кто их хочет и что может пойти не так.

13 мин · 40 XP

Ты уже знаешь, как пакет находит дорогу через планету и как ОС не даёт одному процессу залезть в память другого. Безопасность — это то, что происходит, когда эти знания применяют против тебя. Сканирование портов — всего лишь попытка TCP-соединения, которая вежливо обрывается. Баг с правами — всего лишь режим файла, на который никто не посмотрел. Этот урок — про вопрос, который задают до всего остального: что я защищаю и от кого?

Начни с активов — того, что действительно больно потерять. Не «сервер», а: база клиентов, админский аккаунт, бэкап, репутация магазина, сама возможность принимать заказы. Потом спроси, кому нужен каждый из них. Скучающий подросток и наёмный преступник хотят от одного сайта разного, и защищаться от них надо по-разному. Потом спроси, как именно данные утекают: не в теории, а пройдя путь данных шаг за шагом.

ASSET            WHO WANTS IT          HOW IT LEAKS
---------------  --------------------  ------------------------------
admin account    anyone, really        password reused on a leaked site
customer emails  spammers, scammers     export endpoint with no auth
server CPU       crypto miners         upload form that runs a script
database backup  competitors           backup file left in a public folderАктив стоит защищать только тогда, когда ты назвал, кому он нужен и как тот его получит.

Простой чек-лист спасает от взгляда в пустой лист. Задай шесть вопросов про каждую часть системы. Может ли кто-то выдать себя за другого пользователя (spoofing)? Может ли изменить данные, которые должен был только читать (tampering)? Может ли потом отрицать, что что-то сделал, а записи для проверки нет (repudiation)? Может ли читать то, что видеть не должен (information disclosure)? Может ли сделать сервис недоступным (denial of service)? Может ли обычный пользователь получить права, которых ему не давали (elevation of privilege)? Шесть вопросов — шесть видов багов.

UserWeb serverDatabase1. connect to shop.example2. read the order3. order and customer4. page with the ordera threat is any way steps 1-4 go wrongsend my order to another accountno check that the order is minesomeone else sees the order

Практика

  1. Сопоставь каждый актив магазина с тем, кому он нужнее всего.

    Подсказки
    • Сначала реши, что можно украсть или сломать, и только потом — кому это интересно.
    • Выбирай то, что атакующий попробует первым, а не самое экзотическое.

    14 XP

  2. Команда выпустила страницу со списком всех заказов. Она работает, тесты проходят, и она открывается без входа в аккаунт. В чём настоящая проблема?

    Подсказки
    • Перечисли то, что защищаешь, и спроси, сколько стоит каждый пункт.
    • Функция, работающая идеально, всё равно проблема, если ею может воспользоваться кто угодно.

    13 XP

  3. Расставь шаги моделирования угроз в порядке, который действительно приводит к исправлению.

    Подсказки
    • Начинай с того, что защищаешь, а не с трюков атакующего.
    • Чинят уже после того, как решили, какой риск достаточно важен.

    15 XP