Глоссарий
Что такое RCE (Remote Code Execution) — почему это худший класс багов
RCE (Remote Code Execution) позволяет атакующему выполнить код на вашем сервере по сети — прямой путь к захвату, худший класс. Чем оно отличается от XSS и SQLi, что задаёт радиус поражения и как защищаться: быстрые патчи, мониторинг CVE, минимум привилегий.
«RCE с CVSS 10.0» — фраза, от которой безопасники напрягаются сильнее всего. Вот почему RCE — «худший класс» и чем оно отличается от других багов, с нуля.
Чем оно отличается от других багов
У большинства уязвимостей ограниченный радиус поражения. RCE выполняет команды на самом сервере, поэтому оно на порядок хуже.
| Уязвимость | Где выполняется код | Основной ущерб | Типичная критичность |
|---|---|---|---|
| XSS | в браузере | кража сессии, дефейс | средняя–высокая |
| SQLi | в базе данных | чтение/изменение данных | высокая |
| RCE | на самом сервере | захват, латеральное движение, всё | худшая (класс 10.0) |
Почему это худший класс
Атакующий, выполняющий команды на вашем сервере, означает: что может делать этот процесс, то могут делать и они.
RCE достигнуто (выполнение произвольного кода)
.env и украсть секретыРадиус поражения задаётся «привилегиями этого процесса». Именно поэтому контейнеризация, минимум привилегий и изоляция (минимизация радиуса поражения) работают. Запустите под root — и всё потеряно; запустите непривилегированно и изолированно — и вы локализуете это.
Большинство RCE приходят из «известных дыр», а не из ваших багов
RCE очень часто приходит не из бага, который вы написали, а из известной дыры во фреймворке или библиотеке, которые вы используете. Многие знаковые инциденты были RCE.
- Log4Shell (CVE-2021-44228): RCE через компонент логирования; мир запаниковал.
- Заброшенный CVSS 10.0: опубликованное RCE, оставленное без патча на месяцы.
Что вы можете сделать для защиты
Не пренебрегайте опубликованными CVE (главная защита)
Мониторьте CVE машинами (Dependabot / osv-scanner) и быстро обновляйтесь до исправленных версий. Большинство RCE приходят из пренебрежения известными дырами.
Судите по работающей версии
Измеряйте риск по версии, которая реально работает, а не по нижней границе в манифесте. Доверие тексту искажает оценку опасности.
Минимизируйте радиус поражения
Запускайте под непривилегированным пользователем; изолируйте контейнеры и сети. Локализуйте ущерб, если вас поразили.
Не передавайте ввод прямо в выполнение
Никогда не подавайте внешний ввод напрямую в команды оболочки, десериализацию или вычисление шаблонов. Основы того, чтобы не написать RCE самому.
Читать дальше
- Глоссарий: Что такое CVE · Что такое CVSS
- История: Log4Shell — RCE через зависимость
- Защита: Безопасный запуск Next.js (гигиена CVE)
FAQ
QЧем RCE отличается от обычных багов вроде XSS?
XSS и подобные в основном безобразничают внутри браузера пользователя; RCE запускает произвольные программы на самом сервере. Поскольку оно может дотянуться до привилегий сервера, данных и других сервисов, это, как правило, самый тяжёлый класс.
QКак далеко распространяется ущерб от RCE?
Настолько далеко, насколько простираются привилегии процесса, работавшего в момент атаки. Запуск под root или с широкими правами — ущерб огромен; запуск под непривилегированным пользователем с изоляцией контейнера — можно локализовать. Вот почему минимум привилегий и изоляция важны.
QКак мне (разработчику) защититься от RCE?
Помимо того, чтобы не писать RCE-баги самому (не передавайте ввод прямо в выполнение), главная защита — не пренебрегать опубликованными RCE в используемых вами фреймворках/библиотеках. Мониторинг CVE и быстрые обновления — основа.