Уязвимости open source приложений
Debian-Lab![](/file/378fa0e9ae291019ed400.jpg)
Программное обеспечение с открытым исходным кодом помогло революционизировать способ создания приложений профессионалами и энтузиастами. Возможность заимствовать стороннюю библиотеку для быстрого прототипирования и создания приложения не только ускоряет работу над проектами, но и упрощает работу.
Библиотеки с открытым исходным кодом при создании приложений - не единственный положительный аспект программного обеспечения с открытым исходным кодом. Готовые open source приложения находятся Интернете просто везде. Почти у каждой коммерческой версии программного обеспечения есть конкурент с открытым исходным кодом, который выполняет почти те же функции, что несомненно делает программы с открытым исходным кодом очень популярными и практически всегда бесплатными.
Такая популярность привела к всплеску использования программного обеспечения с открытым исходным кодом. Это просто прекрасно, если в выбранном Вами проекте использовались надлежащие методы обеспечения безопасности при написании приложения, но если какие-либо недостатки безопасности остались незамеченными, то у конечного пользователя могут возникнуть проблемы. Специалисты из Veracode недавно обнаружили, что из 85 000 приложений, которые были просканированы, 70% имели уязвимости. Это означает, что многие из, казалось бы, безобидных приложений, которые Вы использовали, могли оказаться не такими безопасными, как Вы думали.
Что же такое уязвимости безопасности?
Термин «уязвимость системы безопасности» очень часто используется в современном мире разработки программного обеспечения, и не просто так. В наши дни почти все подключено и запрограммировано для связи через Интернет, а это означает, что если ваше приложение имеет уязвимость в системе безопасности, к Вашей системе могут подключаться злоумышленники, перехватывающие Ваши данные или заражающие ваш компьютер и вообще всю сеть вредоносным ПО.
Однако не все приложения одинаковы. В отчете Veracode говорится о том, что приложения JavaScript, очень часто используют сторонние библиотеки и библиотеки с открытым исходным кодом. Многие векторы атак могут использоваться с JavaScript, и такая массовая зависимость от такого количества библиотек определенно вызывает беспокойство. Но это не означает, что JavaScript - единственный нарушитель.
В том же отчете были описаны многие другие языки программирования и фреймворки, которые также использовали в своих проектах небезопасные библиотеки. PHP и Swift - два таких примера, которые требуют работы по обеспечению безопасности и имеют высокую вероятность использования небезопасной библиотеки.
Распространенные типы уязвимостей
Существует множество различных типов уязвимостей, которым может быть подвержено приложение, если надлежащие меры безопасности не будут предприняты прямо на этапах разработки Вашего проекта. OWASP (Open Web Application Security Project) - отличный источник текущих угроз и уязвимостей, которые могуи быть на современных сайтах и веб-приложениях. В отчете упоминается немало из топа 10 уязвимостей от OWASP.
Из списка угроз OWASP отчет смог дать нам полезную разбивку того, какие уязвимости были обнаружены. Отчет показал, что от самого маленького до самого большого, неправильная конфигурация безопасности вызывает всего 0,6% проблем из их выборки. Следующим стал XML External Entities, или сокращенно XXE, распространенность которого составила 2,7%. Затем мы видим нарушение аутентификации с 7,4%, раскрытие конфиденциальных данных с 7,8% и внедрение в 8,8% образцов.
Три основных уязвимиости присутствовали в трех из каждых четырех недостатков, обнаруженных в отсканированных библиотеках, что заставляет задуматься. Нарушенный контроль доступа был ответственен за 20,3% случаев, небезопасная десериализация - в 23,5%, и наиболее распространенным из всех недостатков безопасности был межсайтовый скриптинг (XSS).
Каждый из этих недостатков можно и обязательно нужно устранить до того, как продукт будет выпущен. Иначе могут возникнуть проблемы.
Есть ли путь вперед?
Хотя отчет и рисует нам довольно мрачную картину текущего состояния безопасности программного обеспечения с открытым исходным кодом, есть вещи, которые вы можете сделать прямо сейчас, чтобы минимизировать риски быть взломаны. В конечном итоге разработчики должны устранить данные уяхвимости в основных библиотеках своего программного обеспечения, но вы так же можете следить за своими приложениями, чтобы убедиться, что все работает так, как должно.
- Защитите свою базовую систему: это означает, что какое бы устройство Вы ни использовали для запуска приложений с открытым исходным кодом - будь то ноутбук, настольный компьютер или даже смартфон - его необходимо обновлять и исправлять как можно чаще. Многие уязвимости в приложениях можно остановить, если в вашу основную операционную систему были внесены исправления.
- Антивирус и защита от вредоносных программ: это звучит довольно сумбурно и однобразно, но если Вы подключаетесь к Интернету, вам обязательно нужна какая-либо защита от вредоносных программ. Если приложение с открытым исходным кодом невольно размещает вредоносное ПО или пытается связаться с сайтом для управления и контроля, то вам необходимо будет принять незамедлительные меры.
- Будьте бдительны: если Вы используете программное обеспечение с открытым исходным кодом, следите за его поведением. Вы стали замечать какие-либо странные всплески в поведении сети, такие как увеличение трафика или высокая загрузка памяти или процессора? Если это происходит во время работы именно Вашего приложения, Вам нужно будет проверить, не возникают ли у других подобные проблемы. С большой долью вероятности, Вы не одиноки.
- Обновите свои приложения: иногда разработчик включает библиотеку, которая, по его мнению, была безопасной, и непреднамеренно открывает для своих пользователей угрозу. Большинство проектов, находящихся в активной разработке, в обязательном порядке обязаны регулярно обновлять библиотеки, поэтому, если Вы знаете о проблеме с Вашим конкретным приложением, обязательно обновите. В худшем случае проект, который обнаруживает, что проблемные библиотеки являются частью программного обеспечения, может выписать их из исходного кода и полностью заменить на другой.
- Создайте свою собственную альтернативу: программное обеспечение с открытым исходным кодом позволяет обмениваться программным обеспечением и изменять его по своему усмотрению. Единственные ограничения - это лицензия, выданная вместе с приложением, и Ваши собственные технические возможности. Большинство соглашений о программном обеспечении с открытым исходным кодом позволяют Вам вносить изменения в исходный код, если Вы следуете соглашению, в соответствии с которым была выпущена библиотека. Возможно, наиболее широко признанной лицензией такого типа является GPL, или публичная лицензия библиотеки GNU, которая распространена во многих системах и приложениях Linux.
Доверяй, но проверяй
Вы можете подумать о создании какого-либо приложения, которое могло бы помочь вам в повседневном рабочем процессе. Прежде чем приступить к разработке, попробуйте установить, есть ли какие-либо известные уязвимости в связанных библиотеках с Вашим проектом или в самом приложении есть какие-либо известные ошибки, влияющие на безопасность. Если же Вы предпочитаете проверять сами, Вы можете использовать инструменты для проверки уязвимостей зависимостей программного обеспечения.
OSSIndex
OSSIndex - это инструмент, который позволяет просматривать содержимое пакетов, которые обычно встречаются в таких средах, как Linux и Nugent, а также в пакетах Chocolatey и MSI. API, который он использует, поможет Вам обнаружить и устранить уязвимости. В ближайшем будущем OSSIndex планирует внедрить автоматизированные процессы, которые позволят Вам создавать процедуры тестирования для поиска уязвимостей.
NSP
Проект Node Security ориентирован в первую очередь на модули Node.js и любые зависимости этих объектов от NPM. Инструмент позволяет разработчикам сканировать как уязвимости, так и зависимости через базу данных NIST NVD, которая покажет Вам, есть ли какие-либо проблемы с безопасностью в данном приложении. Если они будут обнаружены в модуле, то Вы об этом узнаете.
RetireJS
RetireJS - это инструмент, ориентированный на проекты и программное обеспечение JavaScript. Он очень удобен для пользователя и предоставляет собой такие компоненты, как интерфейс командной строки, который может сканировать плагины для приложений популярных интернет-браузеров, таких как Chrome и Firefox.
Заключение
Теперь, когда мы знаем, каковы уязвимости для проектов с открытым исходным кодом, как обстоят дела? Программное обеспечение с открытым исходным кодом никуда не денется в ближайшее время. Это означает, что если Вы или Ваша компания думаете об использовании приложений с открытым исходным кодом или разработке приложения, использующего библиотеки с открытым исходным кодом, Вам следует проявлять большую осторожность. Существует огромное множество способов снизить риски, присущие некоторым из этих библиотек. Если Вы тщательно проведете исследование и точно узнаете, из чего состоит приложение, тогда Вы сможете лучше обезопасить себя от потенциальных проблем с безопасностью.
![](https://www.tgraph.io/file/cdc3d37b90f02275e8020.png)
⏳ Наш основной канал - @debian_lab