Исследователь безопасности Google сообщила первые подробности о работе команды добровольцев из 50 сотрудников компании, которая в прошлом году помогла внести исправления в более 2600 проектов с открытым исходным кодом в связи с критической уязвимостью в широко использующемся Java-процессе.
В ноябре 2015 г. на так называемую проблему десериализации (восстановления объектов из последовательности байтов) Java впервые обратил внимание консультант FoxGlove Security, который продемонстрировал атаки, эксплуатирующие уязвимость в WebLogic, Websphere, JBoss и других продуктах категории промежуточного ПО (middleware).
Эта демонстрация побудила выявить уязвимости в ПО многих вендоров, включая Oracle, IBM и Cisco, и в итоге многие исследователи безопасности пришли к заключению, что миллионы приложений — будь то коммерчески поставляемые, заказные или с открытым исходным кодом — восприимчивы к обнаруженной проблеме.
Через пять месяцев после демонстрации консультанта по безопасности FoxGlove один из инженеров Google обратил внимание, что ряд проектов Open Source все еще использует версии Java-библиотеки Apache Commons Collection, в которых присутствовал источник проблемы.
Для исправления дефекта, как правило, требуется всего лишь одна строка кода, и инженер начал обновлять кодовые базы уязвимых проектов Open Source через пользовательский интерфейс GitHub, сперва собственными силами, а затем с помощью других сотрудников. «По мере продвижения работы стало ясно, что проблема масштабнее, чем нам представлялось вначале», — написала в корпоративном блоге софтверный инженер Google Джастин Танни.
Например, для многих проектов Open Source оказалось недостаточно пропатчить всего лишь один этот проект, а надо было это проделать для всех других проектов, зависящих от него, а также внести исправления в зависимости следующих уровней. «Мы пришли к заключению, что для оздоровления глобальной экосистемы ПО старую версию Collections необходимо изъять из максимально возможного числа кодовых баз», — сообщила Танни.
Танни и другие добровольцы воспользовались движком аналитики данных Google BigQuery, написав SQL-запрос, который за пару минут осуществил поиск по всему публичному коду GitHub и выявил около 2600 проектов, использующих уязвимые библиотеки. Вместо того, чтобы заниматься оповещением владельцев проектов о наличии дефекта, инженеры Google решили обновить код самостоятельно, учитывая серьезность проблемы и ее широкое распространение.
Обычно, когда инженеры Google хотят внести изменения в кодовые базы своей компании, которыми владеют сотни групп разработчиков, для выполнения этой задачи используется внутренне разработанное средство под названием Rosie, пояснила Танни. Но поскольку эквивалентный инструмент для автоматического пропатчивания уязвимых проектов Open Source отсутствовал, она и ее коллеги сформировали рабочую группу примерно из 50 добровольцев, чтобы подправить проекты собственными руками.
Эту инициатива получила название Operation Rosehub и, по словам Танни, была организована преимущественно через списки рассылки компании. Работая сообща, участники Operation Rosehub за несколько недель разослали патчи в проекты Open Source. «Эта работа не была поручением руководства компании, однако управленцы ее поддерживали. Они были рады тому, что сотрудники спонтанно самоорганизовались и отдали 20% своего времени полезному делу», — отметила Танни.
Исправления были внесены только в Open Source-проекты GitHub, которые напрямую ссылались на уязвимые библиотеки. Многие же другие проекты и приложения остаются уязвимыми к угрозе. Как один из примеров, Танни указала на недавнюю атаку с программой-вымогателем на Городское транспортное агентство Сан-Франциско, в которой злоумышленники воспользовались ошибкой десериализации Java для получения доступа к критическим системам и инфраструктуре.
«Хотим обратить внимание на тот факт, что сегодня существуют средства исправления ПО в широком масштабе, и они лучше всего работают, когда ПО является открытым», — сказала она.