Критическая уязвимость АСПРО

 
Критическая уязвимость АСПРО - новости агентства A-position

Новая уязвимость в PHP АСПРО: как избежать угрозы атак через unserialize?

Разработчики и владельцы веб-сайтов на PHP столкнулись с серьезной угрозой: функция unserialize, активно используемая в коде многих проектов, оказалась уязвимой для атак. Если данные для этой функции поступают из ненадежных источников, злоумышленники могут получить контроль над системой, запустить вредоносный код или украсть конфиденциальные данные.

В чем суть проблемы?

Функция unserialize предназначена для преобразования сериализованных данных обратно в объекты PHP. Однако, если злоумышленник получает возможность передавать в нее собственные данные, он может создать вредоносный объект и выполнить на сервере произвольный код. Это особенно опасно в системах, где используются устаревшие библиотеки или некорректно настроенная защита.

Как защитить свой сайт?

Мы и другие Эксперты настоятельно рекомендуют следующее:
Не используйте unserialize с пользовательскими данными – вместо этого применяйте json_decode, который не подвержен подобным уязвимостям.
Фильтруйте входные данные – проверяйте и ограничивайте их формат перед обработкой.
Обновите все библиотеки и фреймворки – разработчики уже выпустили исправления для уязвимых версий.
Используйте защищенные методы сериализации – в некоторых случаях стоит полностью отказаться от unserialize в пользу более безопасных решений.

Почему это важно?

Атаки через unserialize уже фиксировались в популярных веб-приложениях и системах управления контентом (CMS). Если ваш сайт использует PHP и активно работает с сериализованными данными, настоятельно рекомендуется провести аудит безопасности.

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

 

### **Как исправить уязвимость в PHP?**  

Чтобы устранить проблему, необходимо внести изменения в код, где используется функция `unserialize`.  

#### **Что делать?**  
Во всех местах, где применяется `unserialize`, нужно добавить второй аргумент `['allowed_classes' => false]`, который запрещает загрузку потенциально опасных объектов.   

**Было:**  
```php
unserialize($_REQUEST["PARAMS"])
```  
**Стало:**  
```php
unserialize($_REQUEST["PARAMS"], ['allowed_classes' => false])
```  

**Какие файлы проверить?**  
Важно проверить и внести исправления в следующих директориях:  
`/ajax/`  
`/include/`  
`/form/`  
`/bitrix/components/aspro/`  

Для поиска уязвимых мест рекомендуем запустить поиск по этим папкам по слову `unserialize` и внести необходимые изменения.  

**Что делать, если используется `Solution::unserialize()` или `CMax::unserialize()`?**  
Если в вашем коде вместо `unserialize` используются методы `Solution::unserialize()` или `CMax::unserialize()`, то исправлять ничего не нужно – они уже включают защиту от этой уязвимости. Это значит, что у вас установлено обновление, устраняющее проблему.  

**Совет:** Даже если ваш сайт работает без сбоев, рекомендуем провести аудит безопасности, чтобы убедиться, что все потенциальные уязвимости закрыты!

недавние новости
и события
Находим ошибки верстки
Находим ошибки верстки