frp — быстрый обратный прокси. С 0.53.0 по 0.70.1 дополнительный туннельный шлюз SSH frp в pkg/ssh/server.go анализирует запрос канала SSH exec, добавляя 4 к контролируемой злоумышленником четырехбайтовой длине с прямым порядком байтов. Длина 0xFFFFFFFF приводит к переносу сложения uint32 в 3, отменяет проверку границ полезной нагрузки и вызывает панику полезной нагрузки [4:3] в TunnelServer.handleNewChannel.
Если файл авторизованных ключей не настроен, sshConfig.NoClientAuth позволяет неаутентифицированному узлу достичь этой фазы канала до проверки токена frp, поэтому один пятибайтовый запрос завершает процесс frps и удаляет каждый активный туннель. Эта проблема исправлена в версии 0.70.1.
Показать оригинальное описание (EN)
frp is a fast reverse proxy. From 0.53.0 until 0.70.1, frp's optional SSH Tunnel Gateway in pkg/ssh/server.go parses an SSH exec channel request by adding 4 to an attacker-controlled four-byte big-endian length. A length of 0xFFFFFFFF makes the uint32 addition wrap to 3, defeats the payload bounds check, and causes payload[4:3] to panic in TunnelServer.handleNewChannel. When no authorized-keys file is configured, sshConfig.NoClientAuth permits an unauthenticated peer to reach this channel phase before the frp token is checked, so a single five-byte request terminates the frps process and drops every active tunnel. This issue is fixed in version 0.70.1.
Характеристики атаки
Последствия
Строка CVSS v4.0