Как я могу исправить / обойти уязвимость SSLv3 POODLE (CVE-2014-3566)?

После BEAST атаки и Heartbleed bug , теперь я слышал о новой уязвимости в SSL / TLS под названием POODLE . Как мне защитить себя от эксплуатации?

  • Это касается только серверов или клиентов?
  • Является ли этот OpenSSL / GnuTLS специфичным?
  • Какие сервисы затронуты? Только HTTPS или IMAPS, SMTPS, OpenVPN и т. Д .?

Пожалуйста, покажите мне примеры того, как избежать этой уязвимости.

158
задан 16 October 2014 в 22:00

4 ответа

Справочная информация

SSL разработан для защиты транспортного уровня в Интернете. Для «Интернета», известного как HTTP, вы будете знать это как HTTPS, но он также используется для других протоколов приложений. SSLv2 был первым широко используемым протоколом безопасности транспорта, но вскоре был признан небезопасным. Преемники SSLv3 и TLSv1 теперь широко поддерживаются. TLSv1.1 и TLSv1.2 новее и также получают большую поддержку. Большинство, если не все веб-браузеры, выпущенные с 2014 года, поддерживают его.

Недавнее открытие, сделанное инженерами Google, указывает на то, что SSLv3 больше не должен использоваться (например, SSLv2 давно устарел). Количество клиентов, которые не смогут подключиться к вашему сайту / услуге, вероятно, очень ограничено. CloudFlare объявил , что менее 0,09% их посетителей по-прежнему полагаются на SSLv3.

Простое решение: отключить SSLv3.

Предоставляет ли Ubuntu какие-либо обновления?

Да, через usn- 2385-1 с добавлением функции SCSV, , но это не решает проблему полностью , так как не отключает SSLv3, и исправление будет работать только в том случае, если были исправлены обе стороны соединения. Вы будете получать его через регулярные обновления безопасности в вашем диспетчере пакетов.

Итак, ВЫ должны сами предпринять действия, чтобы отключить SSLv3 (это настраивается). В будущих версиях клиентов / браузеров SSLv3, скорее всего, отключится. Например. Firefox 34 сделает это.

Полное отключение SSLv3 по умолчанию в Ubuntu на уровне реализации, вероятно, нарушит некоторые возможности использования SSL без HTTPS, которое не так уж уязвимо, поэтому я предполагаю, что сопровождающие этого не сделают и будет применяться только этот патч SCSV.

Почему обновление SCSV в OpenSSL через usn-2385-1 не устраняет проблему?

Действительно, перестаньте задавать такие вопросы и просто пропустите несколько абзацев и отключите SSLv3. Но послушайте, если вы не уверены, пожалуйста:

POODLE показывает, что SSLv3 с шифрами CBC не работает,внедрение SCSV этого не меняет. SCSV только следит за тем, чтобы вы не переходили с некоторого протокола TLS на какой-либо более низкий протокол TLS / SSL по мере необходимости с помощью атаки Man-in-the-Middle, необходимой для обычных случаев.

Если вам нужно получить доступ к какому-либо серверу, который делает это не предлагает TLS вообще, а только SSLv3, тогда у вашего браузера действительно нет выбора и он должен взаимодействовать с сервером, используя SSLv3, который в этом случае уязвим без какой-либо атаки на более раннюю версию.

Если вам нужно получить доступ к какому-либо серверу, который также предлагает TLSv1 + и SSLv3 (что не рекомендуется), и вы хотите быть уверены, что злоумышленник не переведет ваше соединение на SSLv3, тогда как сервер, так и клиент нуждаются в этом патче SCSV.

Для Чтобы полностью решить проблему, достаточно отключить SSLv3 на вашем конце, и вы можете быть уверены, что вам не будет понижен рейтинг. И вы не сможете разговаривать с серверами, поддерживающими только SSLv3.

Хорошо, а как мне отключить SSLv3?

См. Ниже в разделах, посвященных конкретным приложениям: охвачены Firefox, Chrome, Apache, Nginx и Postfix на данный момент.

Затронуты только серверы или также клиенты?

Уязвимость существует, если и сервер, и клиент принимают SSLv3 (даже если оба поддерживают TLSv1 / TLSv1.1 / TLS1.2 из-за атаки на более раннюю версию) .

Как администратор сервера вы должны отключить SSLv3 сейчас для безопасности ваших пользователей.

Как пользователь, вы должны отключить SSLv3 в своем браузере сейчас , чтобы обезопасить себя при посещении веб-сайтов, которые все еще поддерживают SSLv3.

Это OpenSSL / GnuTLS / конкретный браузер?

Нет. Это ошибка протокола (дизайна), а не ошибка реализации. Это означает, что вы не можете исправить это (если только вы не измените дизайн старого SSLv3).

И да, есть новый релиз безопасности OpenSSL , но читайте ниже ( Но Мне действительно нужна поддержка SSLv3 ... по причинам X, Y, Z! ) о том, почему вам лучше полностью отключить SSLv3.

Могу ли я отключить SSLv3 на уровне сети (брандмауэра)?

Ну да, наверное. Я поместил это в отдельный пост в блоге для дальнейших размышлений и работы. У нас может быть какое-то волшебное iptables правило, которое вы можете использовать!

Моя запись в блоге: Как отключить SSLv3 в вашей сети с помощью iptables для POODLE?

Это актуально только для HTTPS или также для IMAP / SMTP / OpenVPN и других протоколов с поддержкой SSL?

Текущий вектор атаки, как показали исследователи, работает с контролем открытого текста, отправляемого на сервер с помощью Javascript, запускаемого на машине жертвы. Этот вектор не применяется к сценариям без HTTPS без использования браузера.

Кроме того, обычно SSL-клиент не позволяет понижать уровень сеанса до SSLv3 (с TLSv1 +, видимым в возможностях рукопожатия), но браузеры хотят этого очень обратно совместимы, и они это делают. Комбинация с управлением открытым текстом и специфическим способом построения HTTP-заголовка делает его доступным для использования.

Вывод: отключите SSLv3 для HTTPS сейчас , отключите SSLv3 для других служб в следующем служебном окне.

Какое влияние? Нужно ли мне отозвать и заново создать сертификат моего сервера? (Как и в случае с Heartbleed)

Нет, для этого вам не нужно менять сертификаты. Уязвимость предоставляет возможность восстановления открытого текста из данных сеанса, она не обеспечивает доступа к каким-либо секретам (ни к ключу сеанса, ни к ключу сертификата).

Злоумышленник, скорее всего, способен только украсть заголовки открытого текста, такие как файлы cookie сеанса, для выполнения захват сеанса . Дополнительным ограничением является необходимость полной (активной) атаки MitM .

Могу ли я сделать что-нибудь еще, чтобы улучшить мою конфигурацию SSL в целом?

Как пользователь, помимо отключения SSLv3 в ваш браузер, не совсем. Просто всегда устанавливайте последние обновления безопасности.

Для серверов следуйте Руководству по TLS-серверам Mozilla . И протестируйте его с помощью теста SSL Labs Qualys . Получить рейтинг A + на вашем сайте действительно не так уж и сложно. Просто обновите свои пакеты и выполните рекомендации из руководства Mozilla.

Но мне действительно нужна поддержка SSLv3 ... по причинам X, Y, Z! Что теперь?

Что ж, есть патч, который предотвращает атаку перехода на более раннюю версию клиентов с поддержкой TLSv1, называемую резервной защитой SSLv3. Между прочим, это также улучшит безопасность TLSv1 + (атака на более раннюю версию сложнее / невозможна). Он предлагается в качестве бэкпорта из более поздней версии OpenSSL в сообщении безопасности Ubuntu usn-2385-1 .

Большой улов: и клиентам, и серверам этот патч нужен для работы. Так что, на мой взгляд, пока вы обновляете и клиенты, и серверы, вам все равно следует перейти на TLSv1 +.

Однако, пожалуйста, просто отключите SSLv3 в своей сети. Приложите усилия к обновлению стандартов безопасности и просто откажитесь от SSLv3.

Я слышал о поддержке SCSV для устранения атаки перехода на более раннюю версию протокола. Он мне нужен?

Только если вам действительно нужен SSLv3 по какой-то странной причине,но он также повышает безопасность TLSv1 +, поэтому да, я рекомендую вам установить его. Ubuntu предоставляет обновление для этой функции в usn-2385-1 . Вы будете получать его через регулярные обновления системы безопасности в диспетчере пакетов.

Тестирование уязвимости для частных сайтов (например, интранет / офлайн).

Ваши серверы уязвимы, просто если они поддерживают SSLv3. Здесь несколько вариантов:

  • С OpenSSL s_client:

     openssl s_client -connect :  -ssl3
     

    Если соединение установлено, sslv3 включен. В случае неудачи он отключается. В случае сбоя вы должны увидеть что-то вроде:

     ошибка: 14094410: подпрограммы SSL: SSL3_READ_BYTES: ошибка квитирования предупреждения sslv3.
     
  • Использование nmap :

     nmap --script ssl-enum-ciphers -p 443 myhostname.tld
     

    Он должен вывести « SSLv3: не найдено поддерживаемых шифров ». Отрегулируйте имя хоста / порт.

  • Используя шифрованное сканирование . Клонируйте / загрузите двоичный файл и выполните его:

     ./ cipherscan myhostname.tld
     

    Он не должен перечислять что-либо с SSLv3 в столбце «Протоколы».


Браузер Firefox

Откройте about: config , найдите security.tls. version.min и установите значение 1 . Затем перезапустите браузер, чтобы разорвать все открытые SSL-соединения.

Firefox, начиная с версии 34, по умолчанию отключит SSLv3 и, следовательно, не потребует никаких действий ( источник ). Однако на момент написания 33 только что выпущено, а 34 назначено на 25 ноября.


Google Chrome (Linux)

Отредактируйте /usr/share/applications/google-chrome.desktop ], например

sudo nano /usr/share/applications/google-chrome.desktop

Отредактируйте все строки , начиная с Exec = , чтобы включить - ssl-version-min = tls1 .

Например, строка вроде

Exec=/usr/bin/google-chrome-stable %U

преобразуется в

Exec=/usr/bin/google-chrome-stable --ssl-version-min=tls1 %U

. Затем обязательно полностью закройте браузер (приложения Chrome могут поддерживать ваш браузер активным в фоновом режиме!).

Примечание. Возможно, вам придется повторять это при каждом обновлении пакета google-chrome. , перезаписывая этот файл запуска .desktop . Браузер Google Chrome или Chromium с отключенным по умолчанию SSLv3 еще не объявлен на момент написания.


Apache HTTPD Server

Если вы используете веб-сервер Apache, который в настоящее время поддерживает SSLv3, вам нужно будет отредактировать Apache конфигурация. В системах Debian и Ubuntu это файл /etc/apache2/mods-available/ssl.conf . В CentOS и Fedora это файл /etc/httpd/conf.d/ssl.conf . Вам нужно будет добавить следующую строку в конфигурацию Apache с другими директивами SSL.

SSLProtocol All -SSLv2 -SSLv3

Это позволит использовать все протоколы, кроме SSLv2 и SSLv3.

Пока вы занимаетесь этим, вы можете подумать об улучшении конфигурации набора шифров для ваш веб-сервер, как описано в Руководстве по TLS-серверу Mozilla . Добавьте, например:

SSLCipherSuite          ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder     on
SSLCompression          off
# Read up on HSTS before you enable it (recommended)
# Header add Strict-Transport-Security "max-age=15768000"

Затем проверьте правильность новой конфигурации (без опечаток и т. Д.):

sudo apache2ctl configtest

И перезапустите сервер, например,

sudo service apache2 restart

В CentOS и Fedora:

systemctl restart httpd

Подробнее: Документация Apache

Теперь проверьте: если ваш сайт общедоступен, протестируйте его с помощью инструмента Qualys SSL Labs .


Сервер Nginx

Если вы используете Nginx, просто включите следующую строку в ваша конфигурация среди других директив SSL:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

Пока вы это делаете, вы можете рассмотреть возможность улучшения конфигурации набора шифров для вашего веб-сервера, как описано в Руководстве по TLS-серверу Mozilla . Добавьте, например:

ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
# Read up on HSTS before you enable it (recommended)
# add_header Strict-Transport-Security max-age=15768000;

И перезапустите сервер, например

sudo service nginx restart

Ссылка: Документация Nginx

Теперь проверьте его: если ваш сайт общедоступен, протестируйте его с помощью инструмента Qualys SSL Labs .


Веб-сервер Lighttpd

Версии Lighttpd> 1.4.28 поддерживают параметр конфигурации для отключения SSLv2 и v3. Выпуски Lighttpd до 1.4.28 позволяют отключать ТОЛЬКО SSLv2. Обратите внимание, что Ubuntu 12.04 LTS и более ранние версии устанавливают в лучшем случае lighttpd v1.4.28, поэтому простое исправление недоступно для этих дистрибутивов. Поэтому это исправление следует использовать только для версий Ubuntu выше 12.04.

Для Ubuntu версии 12.04 или Debian 6 обновленный пакет lighttpd доступен в репозитории openSUSE: http://download.opensuse.org/repositories/server:/http/Debian_6.0

Пакет предназначен для Debian 6 (сжатие), но также работает с 12.04 (точно)

Отредактируйте свой /etc/lighttpd/lighttpd.conf , чтобы добавить следующие строки после ssl.engine = "enable" директивы

ssl.use-sslv2          = "disable"
ssl.use-sslv3          = "disable"

Затем вам следует перезапустить службу lighttpd с помощью sudo service lighttpd restart и выполните тест подтверждения ssl3, как описано в предыдущих разделах, чтобы убедиться, что изменение было успешно реализовано.

Взято из http://redmine.lighttpd.net/projects/lighttpd/wiki /Docs_SSL

Для «гибкого SSL» (политика шифрования не применяется и обычная версия также приемлема),вам не нужно ничего менять. Даже SSLv2 лучше простого, поэтому, если вам нужно защитить свой сервер, вы все равно должны использовать режим «обязательного SSL».

Для уже настроенного режима «обязательный SSL» просто добавьте / измените smtpd_tls_mandatory_protocols для входящих подключений и smtp_tls_mandatory_protocols для исходящих подключений:

smtpd_tls_mandatory_protocols=!SSLv2,!SSLv3
smtp_tls_mandatory_protocols=!SSLv2,!SSLv3

Необязательно, если вы хотите отключить SSLv3 и для гибкого шифрования (даже если это не нужно, как описано выше), сделайте это следующим образом:

smtpd_tls_protocols=!SSLv2,!SSLv3
smtp_tls_protocols=!SSLv2,!SSLv3

и перезапустите Postfix:

sudo service postfix restart

Sendmail

(Непроверенное редактирование анонимного пользователя, мне не нравится Sendmail, пожалуйста, проверьте.)

Эти параметры настраиваются в разделе LOCAL_CONFIG вашего sendmail.mc

LOCAL_CONFIG
O CipherList=HIGH
O ServerSSLOptions=+SSL_OP_NO_SSLv2 +SSL_OP_NO_SSLv3 +SSL_OP_CIPHER_SERVER_PREFERENCE
O ClientSSLOptions=+SSL_OP_NO_SSLv2 +SSL_OP_NO_SSLv3

Dovecot

В Dovecot v2.1 + добавьте следующее в ваш /etc/dovecot/local.conf (или новый файл в / etc / dovecot / conf.d ):

ssl_protocols = !SSLv2 !SSLv3

и перезапустите Dovecot:

sudo service dovecot restart

Для более старых версий вам потребуется исправьте исходный код .


Courier-imap (imapd-ssl)

Courier-imap разрешает SSLv3 по умолчанию в Ubuntu 12.04 и других. Вы должны отключить его и использовать STARTTLS вместо принудительного TLS. Отредактируйте файл конфигурации / etc / courier / imapd-ssl , чтобы отразить следующие изменения

IMAPDSSLSTART=NO
IMAPDSTARTTLS=YES
IMAP_TLS_REQUIRED=1
TLS_PROTOCOL=TLS1
TLS_STARTTLS_PROTOCOL=TLS1
TLS_CIPHER_LIST="<take those from the Mozilla TLS Server guide!>"

Сервер HAProxy

SSL поддерживается в HAProxy> = 1.5.

Отредактируйте / etc /haproxy.cfg и найдите строку привязки . Добавьте no-sslv3 . Например:

bind :443 ssl crt <crt> ciphers <ciphers> no-sslv3

Ссылка: Документация HAProxy


OpenVPN

Похоже, не затронуты ( исходный код ).

OpenVPN использует TLSv1.0 или (с> = 2.3. 3) опционально TLSv1.2, поэтому POODLE не влияет на него.


Puppet

Puppet использует SSL поверх HTTPS, но не используется клиентами «браузера», а только агентами Puppet, которые не уязвимы для вектора атаки. показано. Однако лучше всего просто отключить SSLv3.

Я рекомендую использовать stephenrjohnson / puppetmodule Puppet module Puppet module Puppet module Puppet master, в котором я недавно убил SSLv3 .

210
ответ дан 22 November 2019 в 22:51

«Исправление» для курьера отключает tls 1.1 и tls 1.2. Похоже, что нет способа запустить курьера с tls 1.1 или выше. Сканирование PCI на вашем сервере может вернуться с рекомендацией:

Настройте серверы SSL / TLS для использования только TLS 1.1 или TLS 1.2, если поддерживается. Настройте серверы SSL / TLS для поддержки только наборов шифров, которые не используют блочные шифры.

0
ответ дан 16 October 2014 в 22:00

Поскольку уязвимость POODLE является недостатком конструкции самого протокола, а не ошибкой реализации, исправлений не будет. Единственный способ смягчить это - отключить SSLv3 на сервере apache. Добавьте следующие строки в ssl.conf и выполните плавный перезапуск apache.

SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
-1
ответ дан 16 October 2014 в 22:00

Может не быть специфичным для ubuntu, но для того, чтобы обойти уязвимость Poodle в Node.js, вы можете установить secureOptions на require («константы»). SSL_OP_NO_SSLv3 при создании сервера https или tls.

См. https://gist.github.com/3rd-Eden/715522f6950044da45d8 для дополнительной информации

4
ответ дан 16 October 2014 в 22:00
  • 1
    И теперь, когда we' ve нашел источник проблемы, мы можем переустановить ttf-mscorefonts-installer и попытаться устранить Вашу проблему шрифтов. – whtyger 29 February 2016 в 20:21

Другие вопросы по тегам:

Похожие вопросы: