CVE-2024-45337
Злоупотребление connection.serverAuthenticate может привести к обходу авторизации в golang.org/x/crypto
- Опубликовано
- 11 дек. 2024 г.
- Обновлено
- 18 февр. 2025 г.
- Назначение CNA
- Go
- Наблюдены доказательства
- 8 авг. 2026 г.
Первичный CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NНизкий · следующие 30 дней
- Процентиль
- 87,8 %
- Дата модели
- 14 окт. 2026 г.
EPSS – это статистическая оценка, а не достоверность или мера воздействия. Объедините это с CVSS, статусом KEV, воздействием и вашей средой.
Резюме
Приложения и библиотеки, которые неправильно используют `connection.serverAuthenticate` (через поле обратного вызова `ServerConfig.PublicKeyCallback`), могут быть подвержены обходу авторизации. В документации для `ServerConfig.PublicKeyCallback` сказано, что «вызов этой функции не гарантирует, что предложенный ключ действительно используется для аутентификации». В частности, протокол SSH позволяет клиентам запрашивать, является ли открытый ключ приемлемым, прежде чем доказывать владение соответствующим закрытым ключом. `PublicKeyCallback` может вызываться с несколькими ключами, и порядок, в котором были предоставлены ключи, не может использоваться для определения того, каким ключом клиент успешно аутентифицировался, если это вообще произошло. Некоторые приложения, которые сохраняют ключ(и), переданные в `PublicKeyCallback` (или производную информацию), и принимают на их основе решения, связанные с безопасностью, после установления соединения, могут делать неверные предположения. Например, злоумышленник может отправить открытые ключи A и B, а затем аутентифицироваться с помощью A. `PublicKeyCallback` будет вызван только дважды: сначала с A, затем с B. Уязвимое приложение может затем принимать решения об авторизации на основе ключа B, закрытым ключом которого злоумышленник на самом деле не владеет. Поскольку этот API широко используется неправильно, в качестве частичного смягчения golang.org/x/[email protected] обеспечивает свойство, согласно которому при успешной аутентификации с помощью открытого ключа последний ключ, переданный в `ServerConfig.PublicKeyCallback`, будет ключом, использованным для аутентификации соединения. Теперь `PublicKeyCallback` будет вызываться несколько раз с одним и тем же ключом, если это необходимо. Обратите внимание, что клиент всё ещё может не контролировать последний ключ, переданный в `PublicKeyCallback`, если соединение затем аутентифицируется другим методом, таким как `PasswordCallback`, `KeyboardInteractiveCallback` или `NoClientAuth`. Пользователям следует использовать поле `Extensions` возвращаемого значения `Permissions` из различных обратных вызовов аутентификации для записи данных, связанных с попыткой аутентификации, вместо ссылок на внешнее состояние. После установления соединения состояние, соответствующее успешной попытке аутентификации, можно получить через поле `ServerConn.Permissions`. Обратите внимание, что некоторые сторонние библиотеки неправильно используют тип `Permissions`, разделяя его между попытками аутентификации; пользователям сторонних библиотек следует обращаться к соответствующим проектам за рекомендациями.
Ответственное использование
Используйте информацию об уязвимостях только в тех системах, которыми вы владеете или имеете право тестировать. Kitploit ссылается на метаданные общедоступных исследований и не хранит код эксплойта или вредоносные полезные данные.