Google TensorFlow отказывается от поддержки YAML из-за ошибки выполнения кода

28
Нижняя палата Филиппин одобрила НДС для крупных технологических компаний

TensorFlow, популярный проект машинного обучения и искусственного интеллекта на основе Python, разработанный Google, отказался от поддержки YAML, чтобы исправить критическую уязвимость выполнения кода.

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

Уязвимость ненадежной десериализации в TensorFlow

Сопровождающие TensorFlow и Keras, проект оболочки для TensorFlow, исправили уязвимость ненадежной десериализации, которая возникла из-за небезопасного синтаксического анализа YAML.

Этот критический недостаток, отслеживаемый как CVE-2021-37678, позволяет злоумышленникам выполнять произвольный код, когда приложение десериализует модель Keras, предоставленную в формате YAML.

Уязвимости десериализации обычно возникают, когда приложение считывает искаженные или злонамеренные данные, исходящие из недостоверных источников.

После того, как приложение считывает и десериализует данные, оно может аварийно завершить работу, что приведет к отказу в обслуживании (DoS) или, что еще хуже, выполнению произвольного кода злоумышленника.

Об этой уязвимости, связанной с десериализацией YAML, уровень серьезности которой составляет 9,3, специалистам по обслуживанию TensorFlow сообщил специалист по безопасности Арджун Шибу.

Известно, что функция “unsafe_load” довольно либерально десериализует данные YAML – она разрешает все теги , “даже те, которые известны как небезопасные для ненадежных входных данных”.

Это означает, что в идеале “unsafe_load” следует вызывать только для входных данных, поступающих из надежного источника и заведомо свободных от вредоносного содержимого.

Если это не так, злоумышленники могут использовать механизм десериализации для выполнения кода по своему выбору, внедряя вредоносную полезную нагрузку в данные YAML, которые еще предстоит сериализовать.

TensorFlow полностью отказывается от YAML в пользу JSON

После сообщения об уязвимости TensorFlow решил полностью отказаться от поддержки YAML и вместо этого использовать десериализацию JSON.

«Учитывая, что поддержка формата YAML требует значительного объема работы, мы на данный момент удалили его», – говорят сопровождающие проекта в той же рекомендации.

«Методы Model.to_yaml () и keras.models.model_from_yaml были заменены, чтобы вызвать RuntimeError, поскольку ими можно злоупотреблять, чтобы вызвать выполнение произвольного кода», – также объясняются примечания к выпуску, связанные с исправлением.

«Рекомендуется использовать сериализацию JSON вместо YAML или, что лучше, сериализовать в H5».

Стоит отметить, что TensorFlow – не первый и не единственный проект, в котором было обнаружено использование unsafe_load YAML . Использование функции довольно распространено в проектах Python.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here