
SpookySSL CVE-2022-3602 — сканер SSLv3 для Windows, Linux, macOS
Сканер SpookySSL CVE-2022-3602 SSLv3 для Windows, Linux, macOS
Прежде всего, проблема возникает при определении размера байта. При определении размера байта, если вы заметили, значение NULL, то есть пустое/нулевое, не определено, то есть длина байта может быть установлена равной нулю. В команде ниже часть, начинающаяся с xn--, означает прямое преобразование доменных имен, написанных на других алфавитах (например, преобразованных из китайского в punycode), в латинский алфавит. Внутри цикла If команда memcpy выделяет в памяти стековую область размером delta + 1 и записывает в эту область значение outptr. Когда вводится значение NULL, из-за того, что выделяется место размером в 1 байт, два пробельных кода создают переполнение буфера.
Подробная информация: https://github.com/openssl/openssl/commit/c42165b5706e42f67ef8ef4c351a9a4c5d21639a
Прежде всего, мы должны знать об удаленном выполнении кода (RCE)
Атаки с удаленным выполнением кода (RCE) позволяют злоумышленнику удаленно выполнить вредоносный код на компьютере. Воздействие уязвимости RCE может варьироваться от выполнения вредоносного ПО до получения злоумышленником полного контроля над скомпрометированной машиной.
Уязвимость CVE-2022-3602 в OpenSSL возникает из-за неправильной обработки Punycode при проверке сертификатов X.509.
Punycode — это представление строк Unicode с использованием ограниченного подмножества символов ASCII. Обычно используется для кодирования доменных имен, содержащих не-ASCII символы, например японские буквы. Строка, закодированная в Punycode,
начинается с «xn--» и содержит английские символы и цифры.
Уязвимая функция ossl_punycode_decode может вызвать переполнение буфера при декодировании строки Punycode. Она вызывается, когда OpenSSL обрабатывает цепочку сертификатов. Для эксплуатации уязвимости необходимо:
1) Создать сертификат CA (центр сертификации) или промежуточный сертификат, содержащий поле «nameConstraints» с вредоносной строкой Punycode. Строка Punycode должна содержать не менее 512 байт, не считая «xn--».
2) Создать конечный сертификат, содержащий поле otherName в SubjectAlternateName (SAN), которое задает строку SmtpUTF8Mailbox
Уязвимость типа «Отказ в обслуживании» (DoS)
Атака типа «Отказ в обслуживании» (DoS) — это атака, направленная на отключение машины или сети, делая их недоступными для предполагаемых пользователей. DoS-атаки достигают этого, заваливая цель трафиком или отправляя ей информацию, вызывающую сбой.
Уязвимость CVE-2022-3602 также имеет уязвимость типа «Отказ в обслуживании», как и другие переполнения буфера. Переполнение буфера происходит в уязвимой функции ossl_a2ulabel. Когда эта функция встречает часть Punycode, за которой следует точка («.»), она также добавляет «.» в выходной буфер, даже если это переполняет его размер.
Таким образом, злоумышленник может переполнить выходной буфер любым количеством символов «.», что приводит к повреждению стека. Эта уязвимость не может быть использована для удаленного выполнения кода, только для отказа в обслуживании.
Источник: https://blog.checkpoint.com/2022/11/01/openssl-vulnerability-cve-2022-3602-remote-code-execution-and-cve-2022-3786-denial-of-service-check-point-research-update/
