Java, .NET и PHP
Изначально разработчики приложений Java столкнулись с уязвимостью, замеченной в 2015 году исследователями FoxGlove Security. Тогда специалисты нашли баг в широко распространенной библиотеке из состава Apache Commons. Уже в 2016 году, стараниями аналитиков SourceClear, удалось понять, что проблема гораздо обширнее, чем предположили изначально. Как оказалось, уязвимость, связанная с тем, как Java исполняет user-defined код во время десериализации объектов, распространялась не на одну, но на многие десятки библиотек, в числе которых были Apache Directory API, JMS Transport и некоторые версии Webx All-in-one Bundle. В итоге уязвимы оказались многие популярные Java приложения, такие как WebLogic, WebSphere, JBoss, Jenkins, OpenNMS.
Проблема десериализации в Java вынудила разработчиков Apache, Oracle, Cisco, Red Hat, Jenkins, VMWare, IBM, Intel, Adobe, HP и SolarWinds выпустить патчи, а инженеры компании Google объединили усилия и в свободное время занялись «починкой» проблемных библиотеки, исправив более 2600 проектов. В итоге разработчики Oracle сообщили, что вообще планируют отказаться от поддержки сериализации/десериализации в Java.
Позже, в 2017 году, эксперты HPE Security нашли похожую уязвимость в экосистеме .NET. Равно как и в случае с Java, проблема оказалась связана с тем, как .NET библиотеки работают с сериализацией данных. В данном случае атакующий точно так же может добиться выполнения вредоносного кода на целевой машине. Проблеме оказались подвержены не все .NET библиотеки. Даже некоторые приложения, использующие уязвимые библиотеки, проблема тоже обходит стороной.
Через несколько месяцев после этого похожие проблемы были обнаружены и в составе PHP, причем как выяснилось летом текущего года, они оказались опасны для сайтов, работающих под управлением CMS WordPress и не только.
Ruby
Теперь австралийские специалисты из компании Elttam сообщают, что Ruby-приложения точно так же уязвимы перед атаками, связанными с сериализацией и десериализацией. Исследователи прилагают к своему отчету proof-of-concept эксплоит, который демонстрирует, что операции сериализации и десериализации, исполняемые посредством встроенных возможностей Ruby, могут быть использованы злоумышленниками. То есть ситуация осложняется тем, что в отличие от Java и .NET, здесь проблема кроется не в сторонних библиотеках, но в самом Ruby.
По данным специалистов, под угрозой находятся версии от 2.0 до 2.5. К тому же исследователи уверены, что техники атак можно доработать таким образом, чтобы они были эффективны и простив версий 1.8 и 1.9. Также, по их словам, предстоит тщательно изучить имплементации JRuby и Rubinius, которые тоже могут иметь аналогиченые проблемы.
Как ранее уже отмечали специалисты HPE Security, бороться с такими уязвимостями весьма сложно, независимо от того, о каком языке идет речь. Такие проблемы являются комплексом, состоящим багов и плохого кода самих разработчиков, которые не всегда понимают, что подвергающиеся сериализации и десериализации данные не являются безопасными по умолчанию.