Основные аспекты информационной безопасности

Алексей Гришин, куратор направления информационная безопасность школы IT и безопасности HackerU

Ежегодно ущерб российских компаний от киберпреступников составляет 116 млрд рублей. И это только те случаи, которые предаются огласке. Чаще всего компании стараются скрыть, что их системы были взломаны, а данные украдены. Ведь помимо единовременных финансовых потерь, успешные атаки в итоге приводят к падению репутации и котировок.

Создание системы информационной безопасности потребует от крупных компаний и корпораций серьёзных финансовых вложений: от дорогостоящего ПО до пентестов и программ Bug Bounty. Начинающий бизнес не может позволить себе таких расходов, а стартапы и вовсе пренебрегают безопасностью ради максимально быстрого выхода на рынок. Баланс стоимости программного продукта и его защищённости соблюсти не сложно, если придерживаться простых рекомендаций. Ниже – советы, как не прогореть на выстраивании стен и избежать банальных ошибок.

Проверенные решения

Хороший проект пишется безопасно с первой строчки кода. Рассуждать о том, какой язык программирования наименее уязвим, мы не будем, так как у каждого проекта свой путь к выбору инструмента проектирования и уникальная специфика. Общая рекомендация – пользуйтесь проверенными решениями. Если ошибка обнаружена на низком уровне языка программирования — это подвергает опасности весь проект целиком. Несмотря на то, что передовые технологии ускоряют разработку и делают её удобнее, из-за них могут возникнуть проблемы с надежностью и безопасностью. Небольшое запаздывание для бизнеса не критично, но и слишком отставать тоже не стоит. Пользуйтесь языками и решениями, динамично развивающимися и вышедшими из тестирования. Такой подход повысит стабильность вашей разработки, и вам не придётся менять платформу из-за критических недочётов языка, базы данных или другого компонента.

Защита пользовательских данных

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

Бережное отношение к данным и проверка их корректности — залог спокойствия и доверия клиентов. У всех современных приложений есть внутренняя валюта или иные способы монетизации. А для банковских продуктов безопасность — уж точно один из главных критериев оценки. Простая забытая проверка на знак в процессе передачи суммы от одного пользователя другому может привести к катастрофическим последствиям. Отрицательный знак в отправленных данных приведёт к обратной операции: средства со счёта получателя уйдут отправителю платежа.

В современном мире злоумышленники охотятся не только за деньгами, но и за персональными данными пользователей. Их раскрытие зачастую оказывается болезненнее, чем финансовые потери на счёте. Один из последних примеров: хакеры взломали сервис Quora.com и получили доступ к логинам, почтовым адресам и паролям ста миллионов пользователей. По оценке киберкриминалистов, уязвимость скорее всего скрывалась в недостаточно надёжной системе шифрования пользовательских паролей. Прямых финансовых убытков компания не понесла, но доверие пользователей потеряла.

Тестирование

Начинающие разработчики ПО всегда экономят время на тестировании, а иногда даже вносят модификации кода сразу на работающую версию сервиса. Помимо ошибок внутри кода, которые наверняка будут, могут возникнуть проблемы с логикой. Поэтому перед запуском проект нужно обязательно протестировать! Ошибки логики не очевидны и трудно предсказуемы. Бывает и так, что из-за мелкого программистского недочёта при получении доступа к одному файлу, пользователю открывается всё содержимое папки. В автоматическом режиме такую ошибку найти сложно, ведь функциональность она не нарушает, а вот проблем в безопасность добавляет массу.

Аналитика — всему голова

Обязательно настраивайте и постоянно поддерживайте в рабочем состоянии систему логирования. Это единственный способ, который позволит собирать данные о пользователях: как они обращались, зачем, с какой периодичностью, какого типа запросы посылали. Чем больше данных вы будете держать в своей аналитической системе, тем с большей вероятностью вам удастся вычислить злоумышленника при попытке взлома. Или, если атака окажется успешной, вы сможете понять, через какой вектор был нанесён удар. Если вы информированы о своих уязвимостях, то вы сможете их устранить.

Резервное копирование

Не забывайте о регулярных бэкапах. Ведь злоумышленники могут и не взламывать проект, а использовать его в качестве платформы для распространения вирусов: изменить некоторые данные на сайте или внутри приложения. Изначально запрограммированная система так и будет продолжать рассылать заражённый контент и, возможно, пожирать саму себя. Искать причины поломки в этом случае можно будет очень долго. Гораздо быстрее и надёжнее будет откатиться к безопасному состоянию кода.

Только после настройки систем логирования и бэкапирования можно выпускать сервис «к пользователям». Кроме того, системы мониторинга (IDS/IPS) помогут вам уберечь себя от последствий халатной работы администраторов информационных систем, а также помогут в тестах продуктов на наличие ошибок.

Защита и шифрование

Используйте шифрование пользовательских данных там, где оно уместно. Пароль пользователя, его персональная платёжная информация, а также конфиденциальная переписка должны храниться в зашифрованном виде. Но вот загруженные общедоступные данные шифровать не стоит, так как их расшифровка тратит ресурсы и не приносит пользы.

И последнее: не пытайтесь создать абсолютно неуязвимый код, так как, по нашему мнению, 100% безопасных проектов не бывает. Экстремальные ситуации или находчивые злоумышленники выводят из равновесия даже системы, которые изначально казались идеальными. Проводя аналогию с банковскими приложениями, можно сказать, что задача специалиста по IT-безопасности — сделать так, чтобы стоимость атаки многократно превышала прибыль, которую теоретически можно получить от взлома.