
OpenSSL DTLS CVE-2014-0221 Remote Denial
OpenSSL DTLS CVE-2014-0221 Удаленный отказ в обслуживании
Безопасность транспортного уровня на основе датаграмм. *Физический уровень
Поддержка датаграмм на уровне TCP : TLS
Поддержка датаграмм на уровне UDP : DTLS : через соответствующие модификации процесса HandShake обрабатывает обмен ключами, аутентификацию, установку параметров безопасности и т.д., а через тайм-ауты и повторную передачу поддерживает стабильную безопасную связь UDP, обладающего свойствами без установления соединения.
DTLS — это аббревиатура от Datagram Transport Layer Security, протокол для обеспечения безопасности в связи на основе UDP (User Datagram Protocol). TLS (Transport Layer Security) в основном используется для обеспечения безопасности в связи на основе TCP (Transmission Control Protocol), но UDP не является ориентированным на соединение и является пакетно-ориентированным протоколом, поэтому применить TLS напрямую сложно. Для обеспечения безопасности в такой связи на основе UDP был разработан DTLS.
DTLS очень похож на базовую структуру TLS, но имеет несколько ключевых отличий:
Почему OpenSSL: что такое DTLS: TLS на основе UDP, DTLS 1.0 был реализован в OpenSSL
Уязвимость, позволяющая с помощью манипулирования передачей рукопожатия провести атаку «человек посередине» (MITM), расшифровать передаваемые данные и манипулировать данными между сервером/клиентом (CVE-2014-0224)
Уязвимость, позволяющая отправить аномальное рукопожатие DTLS клиенту OpenSSL DTLS, что приводит к отказу в обслуживании (CVE-2014-0221)
Уязвимость, позволяющая отправить аномальный фрагмент DTLS клиенту или серверу OpenSSL DTLS, что приводит к выполнению произвольного кода (CVE-2014-0195)
Уязвимость, позволяющая выполнить произвольный код из-за дефекта функции do_ssl3_write (CVE-2014-0198)
Данная уязвимость возникает в OpenSSL 1.0.0 и 1.0.1, когда опция SSL_MODE_RELEASE_BUFFERS включена (по умолчанию эта опция отключена)
Уязвимость, из-за состояния гонки (race condition) в функции ssl3_read_bytes позволяет злоумышленнику внедрить данные в сеанс или вызвать отказ в обслуживании (CVE-2010-5298)
Данная уязвимость возникает в многопоточных приложениях, использующих OpenSSL 1.0.0 и 1.0.1, когда опция SSL_MODE_RELEASE_BUFFERS включена (по умолчанию эта опция отключена)
Уязвимость, позволяющая вызвать отказ в обслуживании на клиенте OpenSSL TLS с включенными наборами шифров anonymous ECDH (CVE-2014-3470)
OpenSSL 0.9.8 OpenSSL 1.0.0 OpenSSL 1.0.1 Среди них CVE-2014-0221 — это уязвимость, позволяющая отправить аномальное рукопожатие DTLS клиенту OpenSSL DTLS, что приводит к отказу в обслуживании.
< Уязвимость отказа в обслуживании DTLS (CVE-2014-0221) >
o DTLS (Datagram Transport Layer Security) — это протокол, основанный на TLS, который позволяет передавать зашифрованные датаграммы.
o При отправке аномального сообщения рукопожатия DTLS (сообщение DTLS Hello) клиенту DTLS, OpenSSL может войти в рекурсивное состояние, что позволяет осуществить атаку отказа в обслуживании.
if(!s->server && s->d1->r_msg_hdr.frag_off == 0 && wire[0] == SSL3_MT_HELLO_REQUEST) {
if(wire[1] == 0 && wire[2] == 0 && wire[3] == 0) {
if(s->msg_callback)
s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE,
wire, DTLS1_HM_HEADER_LENGTH, s, s->msg_callback_arg);
s->init_num = 0;
return dtls1_get_message_fragment(s, st1, stn, max, ok);
}
else {
al=SSL_AD_UNEXPECTED_MESSAGE;
SSLerr(SSL_F_DTLS1_GET_MESSAGE_FRAGMENT,SSL_R_UNEXPECTED_MESSAGE);
goto f_err;
}
}