Веб-разработчик Приянши Шарма поделилась в своем блоге на dev.to десятью методами устранения уязвимостей в софте.
1. Инъекционные атаки. Это тип уязвимости ПО, при котором злоумышленники переносят вредоносный код из приложения в другую систему. Например, вызовы операционной системы, использование сторонних программ с помощью команд оболочки, а также вызовы серверных баз данных через SQL (так называемые SQL-инъекции). Такие атаки используют поля ввода, которые взаимодействуют с базами данных и каталогами для защиты от уязвимостей. Эти поля часто остаются незащищенными из-за отсутствия входного фильтра.
Лучшая защита от таких угроз — добавление фильтров к входным данным. Чтобы предотвратить изменение запросов злоумышленниками, в базах данных SQL должны использоваться подготовленные операторы.
2. Недочеты системы аутентификации и хранения сессий. Приложения, связанные с управлением и хранением сеанса, часто неправильно реализуются, что позволяет злоумышленникам, например, скомпрометировать ключи, пароли, токены сессии, чтобы временно или навсегда получить доступ над идентификационными данными пользователей.
Чтобы предотвратить автоматическое заполнение и повторное использование украденных учетных данных, разработчики должны применять многофакторную аутентификацию. Также Приянши Шарма утверждает, что очень важно согласовать длину и сложность пароля, а также последовательно реализовать проверку его ненадежности.
3. Незащищенность критичных данных. Раскрытие конфиденциальных данных происходит, когда приложении или компания непреднамеренно раскрывают личную информацию. Обычно злоумышленники перехватывают информацию двумя способами. Во-первых, данные могут перехватить во время их передачи от пользователя к клиенту по методу «man-in-the-middle». Второй способ подразумевает захват данных из-за слабого кэша или паролей и учетных данных.
Автор подборки отмечает, что это не то же самое, что и утечка данных, когда злоумышленник намеренно обходит систему безопасности, чтобы получить доступ и украсть информацию. Эта программная уязвимость возникает в результате неправильной защиты базы данных, в которой хранится информация. Например, вследствие слабого шифрования или его отсутствия.
По мнению Приянши Шарма, одна из лучших практик для предотвращения утечки данных — использование уникальных и сложных паролей для онлайн-учетных записей. Внедрение высококачественного ПО также имеет значение для безопасности системы, потому что в программный пакет включена защита от вирусов и вредоносных программ.
4. Парсинг внешнего XML. Это программная уязвимость приложения, которая анализирует ввод XML. Атака происходит, когда ввод XML, содержащий ссылку на внешний объект, слабо обрабатывается настроенным синтаксическим анализатором XML. Это может привести к раскрытию конфиденциальной информации (пароли, личные данные пользователя) и подделке запросов на стороне сервера.
Для профилактики уязвимости автор советует использовать более простые форматы данных и избегать сериализации конфиденциальной информации. Обнаружить в исходном коде XXE также могут помочь инструменты статического тестирования безопасности приложений (SAST).
5. Нарушение контроля доступа. Разработчики часто недооценивают сложность реализации надежного механизма авторизации. Этим пользуются злоумышленники, находя неправильные схемы и получая возможность просматривать, изменять и удалять контент и взять на себя администрирование сайта.
Чтобы избежать этого, важно спланировать требования к управлению доступом приложения и зафиксировать их в задокументированной политике безопасности. Обширное тестирование также важно, чтобы убедиться, что у злоумышленника не будет возможности обойти механизм авторизации.
6. Неправильная конфигурация безопасности. Здесь речь идет о неправильной настройке или отсутствии защиты мер безопасности, что ставит под угрозу ПО и конфиденциальные файлы. Уязвимости могут включать неисправленные недостатки, незащищенные файлы или каталоги, неиспользуемые страницы и устаревшее ПО.
Чтобы снизить риски уязвимости системы безопасности, Приянши Шарма советует использовать протокол развертывания для постоянной разработки и развертывания обновлений в защищенной среде или определенной архитектуре. Автоматическое развертывание также будет поддерживать приложения в актуальном состоянии и предотвращать атаки.
7. Межсайтовый скриптинг (XSS). Одна из причин возникновения уязвимости — редактирование веб-страницы с применением данных пользователя с использованием API браузера, который может создавать HTML или JavaScript. При это вредоносные агенты могут воспользоваться недостатками межсайтовых скриптов для выполнения собственных. Злоумышленники могут использовать XSS для захвата учетных данных пользователя, выполнения санкционированных действий или получения полного контроля над ПО.
Уязвимость может быть устранена путем очистки ввода. Проверка и экранирование пользовательского ввода поможет предотвратить вредоносную инъекцию.
8. Небезопасная (ненадежная) десериализация. Как пишет Приянши Шарма, эта уязвимость считается наиболее серьезной, влияющей на большинство современных систем. Недостатки десериализации часто приводят к удаленному выполнению кода, что позволяет злоумышленникам выполнять атаки с повторением, внедрением и повышением личных привилегий.
Чтобы предотвратить атаку, средства защиты должны иметь полную видимость архитектуры основного приложения, а также предоставление информационного потока во время исполнения программы.
9. Использование компонентов с известными уязвимостями. Чтобы узнать, какие компоненты имеют уязвимость, в национальной базе данных уязвимостей (National Vulnerability Database) есть обширный список известных сторонних уязвимостей, которые помогут принять решение.
Приянши Шарма советует получить полное представление о компонентах, используемых для создания приложения. Если уязвимость обнаружена, нужно настроить процесс для беспрепятственной загрузки, тестирования и выпуска патчей.
10. Недостатки журналирования и мониторинга. Из-за этого многие компании не могут эффективно управлять нарушениями безопасности. Недостаточное ведение журнала и мониторинг делают систему уязвимой для взлома, извлечения и уничтожения данных.
Для минимизации атак, автор подборки советует установить программы для эффективного мониторинга сети и настроить оповещения, чтобы выявлять сомнительные действия и своевременно реагировать на них.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…