Хорошей мыслью может быть сканирование ваших приложений с целью обнаружения уязвимых библиотек с открытым исходным кодом, чтобы не стать новым Equifax.

На прошлой неделе сайт GitHub запустил новый сервис, чтобы помочь разработчикам выявить и исправить уязвимые зависимости в проектах, помещенных в репозиторий кода. Этот сервис может стать крупным усовершенствованием для разработчиков, которые по различным причинам не знают об известных ошибках в популярных библиотеках для приложений на Ruby, JavaScript и Java.

Недавний взлом компании Equifax, затронувший 145 млн. потребителей в США и несколько сотен тысяч в Великобритании, стал ярким примером того, что может случиться, если вы не сумеете выявить и устранить дефект в открытом ПО. В случае с Equifax это была Apache Struts, популярная библиотека Java.

Хотя руководителей Equifax и ее специалистов по безопасности пригвоздили к позорному столбу из-за недостатков системы защиты, упущения этой компании далеко не уникальны, когда речь идет об устаревших библиотеках с открытым кодом, таящихся в ключевых бизнес-приложениях.

После обнародования взлома Equifax в сентябре находящийся в Великобритании оператор базы данных уязвимостей в открытом коде Snyk просканировал 1 тыс. размещенных на GitHub проектов Open Source и обнаружил, что 64% все еще имеют серьезный изъян, который можно использовать дистанционно и для которого фонд Apache Foundation в марте выпустил исправления. Это один из тех двух дефектов, которые, вероятно, использовались при атаке на Equifax для кражи базы данных.

Генеральный директор и учредитель Snyk Гай Поджарни сформулировал проблему, с которой сталкиваются многие разработчики при обеспечении безопасности приложений с открытым кодом и множеством зависимостей.

«Когда вы применяете библиотеки Open Source, вы используете краудсорсинговый код, и это имеет самые различные последствия для безопасности. Это все равно что полагаться на Википедию при проведении медицинских исследований. В целом все правильно и хорошо, но не всегда, и люди не отслеживают риск для безопасности», — сказал он.

Возрастает опасность известных уязвимостей. Недавние вспышки разрушительного вредоносного кода WannaCry и NotPetya показали, что многие организации на протяжении месяцев позволяют обнародованным ошибкам в Windows сохраняться в важнейших для бизнеса системах. В марте Microsoft выпустила исправление пресловутой ошибки SMB. Тем не менее, в июне, когда разразилась эпидемия WannaCry, она охватила свыше 300 тыс. ПК.

Крупные производители операционных систем по крайне мере извещают пользователей и администраторов о доступности обновлений. Хуже обстоит дело с зависящими от десятков совместно используемых библиотек приложениями, многие из которых не информируют разработчиков об обнаруженной проблеме.

Недавний опрос разработчиков, который провела Snyk, показал, что 16,3% из них не обновляют зависимости и менее половины используют инструменты, предупреждающие их об обнаруженных уязвимостях.

Решению этой проблемы могут помочь новые уведомления GitHub о рисках для безопасности. Snyk помогает GitHub сканировать известные уязвимости в открытом коде, сосредоточившись для начала на JavaScript и Ruby. В следующем году к ним добавится Python. Кроме того, GitHub предоставит предлагаемые его сообществом разработчиков исправления.

Новый проект Microsoft Sonar и инструменты Google в Chrome Lighthouse также используют базу данных Snyk, чтобы помочь веб-разработчикам находить и исправлять известные изъяны в библиотеках JavaScript в рамках более широкого аудита проблем с производительностью веб-сайтов.

Трудности для разработчиков, связанные с JavaScript и популярными средами исполнения JavaScript, такими как Node.js, усугубляются огромным числом используемых зависимостей. Приложения Node.js используют в среднем «сотни, иногда тысячи» зависимостей в своем дереве, в Ruby и Python, как правило, их несколько меньше, поясняет Поджарни.

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

Благодаря интеграции Snyk с Chrome Lighthouse компания имеет теперь более четкую картину того, насколько велик беспорядок в зависимостях JavaScript. В октябре архив HTTP Archive, который ведет организация Internet Archive, приступил к отслеживанию этого показателя и будет сообщать о происходящих изменениях.

При предыдущем сканировании Snyk изучила 5 тыс. наиболее популярных URL-адресов Alexa, а последнее сканирование охватило свыше 400 тыс. URL-адресов с помощью Google BigQuery и показало, что 77% из них содержат по крайней мере одну уязвимую библиотеку JavaScript на стороне клиента. Этот результат гораздо хуже, чем полученный при проведенном ранее в этом году исследовании, которое обнаружило, что 37% из 133 тыс. веб-сайтов включают по крайней мере одну библиотеку с известной уязвимостью.

«Разработчики просто не подозревают об этой проблеме, — сказал Поджарни. — Поэтому важно встраивать средства управления наглядностью представления в стандартные потоки работ».