Вместо того чтобы дожидаться атаки и только после ее начала решать, что делать, заранее пройдитесь по всей вашей системе и продумайте способы реагирования, или аварийные выключатели (kill switch). Это цифровые версии переборок на корабле, которые предназначены не только для обеспечения жесткости, но еще и для герметизации и изоляции, чтобы одна пробоина в корпусе не могла затопить весь корабль. (Если переборки спроектированы неправильно, они создадут больше проблем, чем решат, как это было в случае с RMS Titanic – и, раз уж мы заговорили об этом, в фильме «Титаник» на плоту хватило бы места для двоих!)
Заметки с полей
Утечка данных как из пожарного шланга
У одного из клиентов, с которыми мы работали, была интеграция со сторонним платежным сервисом. Часть интеграции заключалась в том, что API клиента получал уведомление об успешном завершении платежа. Используя средства мониторинга, мы обнаружили странности при работе с этим API: данных приходило гораздо больше, чем следовало, и, кроме этого, было очень много ошибок «неизвестный получатель платежа». При подробном изучении выяснилось, что API получал конфиденциальную информацию о вообще всех платежах, проходящих через этот платежный сервис. Мы тут же сообщили им об этом, и сначала нам не поверили (потому что у них не было соответствующих логов), а когда признали проблему, им потребовался почти день на то, чтобы выключить передачу данных (аварийного отключения у них тоже не было). Если бы у них были логи или хотя бы аварийный выключатель, они могли бы действовать активнее, то есть остановить утечку и уже после этого исследовать проблему. Позже нам сказали, что ошибка была в запросе, в котором отсутствовал нужный оператор WHERE, и поэтому наш клиент получал информацию обо всех платежах, а не только о своих. В этом сервисе явно не проводились ревью и тестирование кода – то есть этот инцидент вскрыл целую пачку проблем – и всё это в публичной компании (так что даже «большие парни» могут допускать такие заметные ошибки).
Цель аварийного отключения не в том, чтобы решить или устранить проблему, а в том, чтобы выиграть время для устранения первопричины проблемы. Вот возможные примеры цифровых аварийных выключателей:
• Отключение сетевого доступа к серверу/компьютеру или подсети.
• Выключение ресурса (или приостановка, если он виртуальный).
Самое важное во время атаки – это ограничить возможный урон. Это необязательно означает останов всех систем в ущерб бизнесу. Если есть возможность, изолируйте атакуемую область, используя заранее предусмотренные аварийные выключатели, но если такой возможности нет, то безопаснее на какое-то время полностью отключить систему, особенно если вы подозреваете, что скомпрометированы конфиденциальные данные пользователей.