Безопасность как искусство
166,87
рейтинг
15 октября 2014 в 15:32

Разработка → Уязвимость SSLv3 POODLE — как BEAST, только проще

собак
Как вы, возможно, знаете, в SSLv3 обнаружена возможность Padding Oracle атаки, которая позволяет злоумышленнику, имеющему какую-либо возможность отправлять свои данные на сервер по SSLv3 от имени жертвы, расшифровывать по 1 байту за 256 запросов. Происходит это из-за того, что в SSLv3 padding не учитывается в MAC.

Теоретически, реализовать атаку можно на любой сервис, где есть возможность влиять на отправляемые данные со стороны атакуемого. Проще всего это реализовать, например, если злоумышленнику необходимо получить Cookie на HTTPS-странице, добавляя свой код на HTTP-страницы, который делает подконтрольные запросы на HTTPS-страницы, и подменяя шифрованные блоки.

В любом случае, атакующему необходимо:
  • Иметь возможность прослушивать и подменять трафик атакуемого
  • Иметь возможность совершать запросы от имени атакуемого с известным атакующему текстом


Уязвимость не зависит от конкретной реализации, она by design. Хоть уязвимость и затрагивает только CBC-режим, лучше отключить SSLv3 полностью. Время SSL прошло.

Как защититься?


Отключите SSLv3 как на клиентах, так и на серверах.

В Firefox < 34 нужно либо установить аддон, либо
about:config → security.tls.version.min=1
(а в >34 SSLv3 отключен)

В Chrome добавьте
--ssl-version-min=tls1
в качестве ключа запуска

В Internet Explorer уберите галочку с «SSLv3» в настройках безопасности.

Для nginx:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

Для Apache:
SSLProtocol All -SSLv2 -SSLv3

Для IIS

Ссылки


poodlebleed.com — проверка серверов
www.poodletest.com — проверка браузеров
poodlebleed.com/ssl-poodle.pdf — Whitepaper
blog.cloudflare.com/sslv3-support-disabled-by-default-due-to-vulnerability — Анонс отключения SSLv3 на Cloudflare по умолчанию
googleonlinesecurity.blogspot.ru/2014/10/this-poodle-bites-exploiting-ssl-30.html — Анонс от Google
security.stackexchange.com/questions/70719/ssl3-poodle-vulnerability — Подробная информация об атаке
www.imperialviolet.org/2014/10/14/poodle.html — Детальное описание атаки
Автор: @ValdikSS
Digital Security
рейтинг 166,87
Безопасность как искусство

Комментарии (51)

  • +20
    Не написано главное — MiM может форснуть обе стороны протокола на использование SSL3 даже если обе стороны горят желанием использовать что-то получше. Потому и надо _запрещать_ использовать SSL3, чтобы в такой ситуации (когда MiM форсит SSL3) коннект не прошёл.

    PS В IE6 надо ещё отдельно TLS включать руками.
    • 0
      Если я правильно ошибаюсь, то отключение SSL 3 в настройках IE 6 не выключает SSLv3. По крайней мере, по результатам тестирования IE6/WinXP на ssllabs.com
    • 0
      Так же гугл в своём анонсе рекомендует начать использовать TLS_FALLBACK_SCSV, как раз для предотвращения вредоносных понижений версии протоколов в будущем.

      И этот функционал введен в последних версиях openssl (openssl-0.9.8zc, openssl-1.0.1j), в которых так же прикрыли очередную возможность вызвать DoS (severity: high).

      Так что всем вновь приятного обновления openssl и терпеливого ожидания libressl.
  • +1
    Отключение SSLv3 в IIS: www.digicert.com/ssl-support/iis-disabling-ssl-v3.htm
  • +3
    Выглядит гораздо проще в плане реализации чем BEAST. Нет нужны в ритуальных плясках с подгоном длины блока, достаточно всего-навсего заменить последний блок, блоком содержащим интересную для атакующего информацию. Для вскрытия 8 байтового блока достаточно послать серверу всего около 2048 шифртекстов.
    Любопытно сколько еще найдут атака в SSL прежде чем все перейдут на TLS.
    • 0
      Я прошу прощения, сейчас более подробно глянул описание атаки. Все таки от ритуальных плясок с выравниванием блоков так и не получилось избавиться. Получается что злоумышленник все равно должен часть траффика контролировать, чтобы модифицировать шифруемый поток.
  • +1
    SSL3.0 [RFC6101] is an obsolete and insecure protocol.
    • +1
      Только вот его поддерживают много кто, включая гугль (проверял несколько часов назад). Это означает, что добрый владелец хотспота «Free WiFi» через несколько минут активного вашего общения с гуглом продолжит его от вашего имени без вашего участия.
      • 0
        В т.ч., Интернет-серверы банков. Только что проверил Авангард и Русский стандарт — поддерживают. В первом неприятно ещё и то, что для входа и просмотра данных об операциях двухфакторная аутентификация не используется, только для выполнения платежей.

        Приятно удивило, что Сбербанк SSL3.0 не поддерживает.
        • 0
          ТКС тоже не поддерживает.
        • 0
          Приятно удивило, что Сбербанк SSL3.0 не поддерживает.

          Вы уверены?

          openssl s_client -connect online.sberbank.ru:443 -ssl3
          CONNECTED(00000003)
          depth=2 /C=US/O=thawte, Inc./OU=Certification Services Division/OU=© 2006 thawte, Inc. — For authorized use only/CN=thawte Primary Root CA
          verify error:num=20:unable to get local issuer certificate
          verify return:0
          — Certificate chain
          0 s:/1.3.6.1.4.1.311.60.2.1.3=RU/2.5.4.15=Private Organization/serialNumber=1027700132195/C=RU/ST=Moscow/L=Moscow/O=Sberbank of Russia OJSC/CN=online.sberbank.ru
          i:/C=US/O=thawte, Inc./OU=Terms of use at www.thawte.com/cps ©06/CN=thawte Extended Validation SSL CA
          1 s:/C=US/O=thawte, Inc./OU=Terms of use at www.thawte.com/cps ©06/CN=thawte Extended Validation SSL CA
          i:/C=US/O=thawte, Inc./OU=Certification Services Division/OU=© 2006 thawte, Inc. — For authorized use only/CN=thawte Primary Root CA
          2 s:/C=US/O=thawte, Inc./OU=Certification Services Division/OU=© 2006 thawte, Inc. — For authorized use only/CN=thawte Primary Root CA
          i:/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com
          — Server certificate
          -----BEGIN CERTIFICATE-----
          MIIFOjCCBCKgAwIBAgIQPSk6uVFViigkw+xdVoMimzANBgkqhkiG9w0BAQUFADCB
          izELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE5MDcGA1UECxMw
          VGVybXMgb2YgdXNlIGF0IGh0dHBzOi8vd3d3LnRoYXd0ZS5jb20vY3BzIChjKTA2
          MSowKAYDVQQDEyF0aGF3dGUgRXh0ZW5kZWQgVmFsaWRhdGlvbiBTU0wgQ0EwHhcN
          MTIxMTI4MDAwMDAwWhcNMTQxMTI4MjM1OTU5WjCBujETMBEGCysGAQQBgjc8AgED
          EwJSVTEdMBsGA1UEDxMUUHJpdmF0ZSBPcmdhbml6YXRpb24xFjAUBgNVBAUTDTEw
          Mjc3MDAxMzIxOTUxCzAJBgNVBAYTAlJVMQ8wDQYDVQQIFAZNb3Njb3cxDzANBgNV
          BAcUBk1vc2NvdzEgMB4GA1UEChQXU2JlcmJhbmsgb2YgUnVzc2lhIE9KU0MxGzAZ
          BgNVBAMUEm9ubGluZS5zYmVyYmFuay5ydTCCASIwDQYJKoZIhvcNAQEBBQADggEP
          ADCCAQoCggEBALKIutN9EHdXRB7/dXZxTl82JsrNUejbNhuVgqaUmmbaa7gv1yCe
          AUpCVwn1lM7p4p9QZX33sRRs4uicRRSoNGuis1w9WMXyizHMkPm9OiXJ5OwMY2Xw
          ncMOLKs++gY92sVZ+UM2BYkivPVgUPamWBudBUpkpdvTnaQLK6OjvEqosc3a8J2f
          offOhYW9TdFFROAa9CGHq6Y5BtUbLANEjU7Dq0mPkUswcIPVVRjjpwbRpHQ57fhl
          MjVtWYhA+O0hF9rkza5S3U1nTEAeppv36ZpZ1GbQwJLHr1KCpcFaFHEWEPPoXx6l
          awUZcAC7XvRm9Qqsv5ov0gDG4lR9++tfFf8CAwEAAaOCAWcwggFjMB0GA1UdEQQW
          MBSCEm9ubGluZS5zYmVyYmFuay5ydTAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIF
          oDA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vY3JsLnRoYXd0ZS5jb20vVGhhd3Rl
          RVZDQTIwMDYuY3JsMEIGA1UdIAQ7MDkwNwYLYIZIAYb4RQEHMAEwKDAmBggrBgEF
          BQcCARYaaHR0cHM6Ly93d3cudGhhd3RlLmNvbS9jcHMwHQYDVR0lBBYwFAYIKwYB
          BQUHAwEGCCsGAQUFBwMCMB8GA1UdIwQYMBaAFM0y4vJdJUcCqo95SzLuA5n9MEnR
          MGgGCCsGAQUFBwEBBFwwWjAiBggrBgEFBQcwAYYWaHR0cDovL29jc3AudGhhd3Rl
          LmNvbTA0BggrBgEFBQcwAoYoaHR0cDovL2NybC50aGF3dGUuY29tL1RoYXd0ZUVW
          Q0EyMDA2LmNlcjANBgkqhkiG9w0BAQUFAAOCAQEAjITONFSAsQatKUkdEyjM+VVf
          mdtprPc4VNshaeIa2lVnbeQD9CDTmZR06g/FVmuLPBqKSQuP6oBsh1oi7c+g0Oyz
          eY8++eqzNR/dGsgXk+o1tYtJJxshuBKuJZ5rZhNRa54UQFyRTecjLChGdkEJQVMq
          IduTLO36A4VB6wudL6HB5ijocQDoFKnm16s3watXjYFGgzdZRoCeLhPekfrnYRgz
          OuXOoIbgt86USPuI24AEk85LXK65HywSj8nH+fgDKf1aObrLu5yQH2dd8HZUMfiZ
          IbCrk7Lsnwv88352PURpKNvhajP5OZJ6dsyfom91aeIe9ZPmjYE76u/ATuKGqA==
          -----END CERTIFICATE-----
          subject=/1.3.6.1.4.1.311.60.2.1.3=RU/2.5.4.15=Private Organization/serialNumber=1027700132195/C=RU/ST=Moscow/L=Moscow/O=Sberbank of Russia OJSC/CN=online.sberbank.ru
          issuer=/C=US/O=thawte, Inc./OU=Terms of use at www.thawte.com/cps ©06/CN=thawte Extended Validation SSL CA
          — No client certificate CA names sent
          — SSL handshake has read 3917 bytes and written 427 bytes
          — New, TLSv1/SSLv3, Cipher is AES256-SHA
          Server public key is 2048 bit
          Compression: NONE
          Expansion: NONE
          SSL-Session:
          Protocol: SSLv3
          Cipher: AES256-SHA
          Session-ID: 87C00AA1E84E56083C8E54D045628927BD6D83622ADE96A9E282856AFA84A3E5
          Session-ID-ctx:
          Master-Key: 0030AEE7CE06F0333D86845E872ACC9F4B71C9E968AE797754AB384FE0DC176E868F19F922C881B46C9A87BA787EBF71
          Key-Arg: None
          Start Time: 1413471572
          Timeout: 7200 (sec)
          Verify return code: 20 (unable to get local issuer certificate)
          — closed
          • 0
            Действительно. И poodletest.com выдаёт то же, тогда как вчера за несколько минут до написания поста был зелёный цвет. Возможно, меняли конфигурацию?
            • 0
              Вы хотели сказать, poodlebleed.com? poodletest.com для браузеров.

              Возможно, из клиентов банка кому-то действительно нужна поддержка SSL 3.0. Это же Сбербанк.
              • 0
                Да, конечно же poodlebleed.com, опечатался.
  • 0
    Мне вот интересно, как заткнуть это дело в Webmin — как я понимаю, надо копать на уровне перлового miniserv?
    Как бы на TLSv1.2 он общаться умеет, другое дело, что фоллбэчиться в SSLv3 тоже.
    • +1
      Сейчас набегут капитаны с фразой «не использовать webmin».
      Просто поставьте перед ним nginx с нужными настройками…

      P.S.
      Если настроите в nginx http авторизацию, на земле станет на одного доброго котика больше :)
      Да, будет две авторизации — http авторизация на nginx + авторизация на webmin.
      Но это убережет вас от внезапных новых дыр в webmin.
      • 0
        Вы так говорите, словно webmin — что-то плохое.
        • +3
          Объективно, webmin — это что-то, в котором постоянно находят дырки.
          www.securitylab.ru/search/?q=webmin&where=iblock_vulnerability&how=d
          www.cvedetails.com/vulnerability-list/vendor_id-358/Webmin.html
          www.webmin.com/security.html

          Субъективно, webmin замедляет процесс выпрямления рук.
          Сужу по собственному опыту — галочки/кнопочки и gui-шечки не научат, как оно устроено внутре.
          • –1
            Ну, дырки это нормально. Делать-то я делаю почти всё через терминал энивей — конфиги этой штуке доверять нельзя, мне просто нужно что-то вроде дашборда, чтобы с телефона посматривать. А так, регулярно юзаю только интерфейс к кроне.
            • +1
              А попробуйте ajenti.
            • +2
              > Ну, дырки это нормально.

              Вы так говорите, как будто это что-то хорошее :)
              Дырки, как деньги — дело не в них, а в их количестве.
              • 0
                Я говорю, что дырки есть везде. Как и в случае с виндой, известных с вебмином много не сколько потому, что он пишется задней ногой левой руки, а потому что это достаточно распространённый софт, и ищут их, соответственно, активно.

                ValdikSS, спасибо за наводку. Терминал там на JS запилен, явы не понадобится?
                • 0
                  На JS, да, никакой Java.
                  • 0
                    О, найс. Тогда посмотрю на досуге обязательно. Ещё раз спасибо.
                • +1
                  Если бы. Я с ним столкнулся ещё в 2003 г. и уже тогда у него была слава дырявого продукта. Посмотрите ссылку
                  www.securitylab.ru/search/?q=webmin&where=iblock_vulnerability&how=d
                  Там о нем с 2001 года статьи.
                  Так что nginx + http авторизация — это совет не от хорошей жизни.
      • 0
        Запилил, оказалось достаточно удобным.
        Нужно только обязательно залимитить к минисерву только для локалхоста, на заметку себе в будущем.
  • 0
    C такими темпами скоро надо будет в httpd.conf ставить "SSLProtocol -All"
  • +1
    • +4
      В Чроме тоже.
  • +3
    Отключение SSLv3 в Opera 12-:
    Инструменты — Общие настройки (Ctrl+F12) — расширенные — безопасность — протоколы безопасности
  • 0
    Есть ли возможность как-то защититься в последнем Safari?
  • 0
    Проверить свой браузер можно на https://www.howsmyssl.com/, смотреть «BEAST Vunreability» и «Insecure Cipher Suites»
    • 0
      Пост_не_читай@Комментируй
  • 0
    Автор, добавьте в пост:

    Для Firefox уже сегодня есть расширение от Mozilla SSL Version Control. Позволяет указать минимально поддерживаемую браузером версию TLS/SSL, по умолчанию как раз ставится TLS 1.0. Расширение не требует перезапуска браузера, не добавляет ничего в UI, и обезопасит вас уже сегодня.

    Конечно, можно флаги менять, но гораздо проще сказать друзьям и родственникам «пройди по ссылке и нажми на кнопку».
    • 0
      В этой штуке было бы больше смысла, если бы она полноценно работала. В текущей версии выбор TLS 1.1 или 1.2 не отличается от выбора 1.0 из-за того, что security.tls.version.max установлен в 1 (firefox-24.8.0) и этот аддон его не меняет.
    • 0
      Готово.
  • 0
    Где можно найти устройства и браузеры, что tsl не поддерживают? Так и не смог найти
    Нужно определить или для своих сайтов SSL запрещать
    Спасибо
  • 0
    В Proxmox, не было желания разбираться с настройками, (а впрочем, всё что использует AnyEvent::TLS, хотя, правильное решение, это ждать обновление модуля)
    дописываем запрет sslv3 (по умолчанию разрешён) в /usr/share/perl5/PVE/HTTPServer.pm
    1623         $self->{tls_ctx} = AnyEvent::TLS->new(%{$self->{ssl}}, sslv3 => 0);
    

    и /etc/init.d/pveproxy restart
  • 0
    Хм, а хром 38.0.2125.104 m под windows запущенный с --ssl-version-min=tls1 всё равно отмечается уязвимым на www.poodletest.com/

    UPD: после ctrl+f5 вылечилось
  • +1
    В Opera 25 уязвимость исправлена без отключения SSLv3.
    В Opera 12 и ниже уязвимость исправлена отключением SSLv3.
    Длинная статья на англ: blogs.opera.com/security/2014/10/security-changes-opera-25-poodle-attacks/
    • 0
      Не знаю, где что исправлено, но у меня Opera 25, запущенная без ключа, говорит что уязвима.
      Opera 25.0.1614.50, OSX.
      • 0
        Opera сама говорит? Или все-таки poodletest.com? poodletest.com проверяет только наличие SSLv3 и говорит, что «если SSLv3 включен, то браузер может быть уязвим». В Opera 25 протокол SSLv3 реализован таким способом, что не подвержен данной узявимости.
        • 0
          Тест говорит. Спасибо за объяснение.
  • 0
    https://poodletest.com говорит мне, что мой браузер не подвержен уязвимости.
    Но https://www.ssllabs.com/ssltest/viewMyClient.html (ссылка на него есть со страницы http://poodlebleed.com/) считает, что подвержен.
    Кому верить??
    • +1
      Google Chrome? Возможно, он больше не использует блочные шифры в SSL 3.0.
      Вы отправляли репорт админу?
      To report problems: jullrich -at- sans -dot- edu (please add «poodletest» to subject and note your IP address)
      • 0
        Спасибо за рекомендацию, отправил автору репорт.

        И скриншот приложил к письму, вот такой:

        image
      • 0
        Так, вот что мне ответил админ создатель сайта poodletest:

        I believe the latest version of Chrome supports SSLv3, but not for block ciphers, which are the problem with the Poodle vulnerability. My test site only shows you as vulnerable if you are using a block cipher. It will not show you as vulnerable if you are only using stream ciphers (like RC4) with SSLv3.

        То есть да, скорее всего всё так, как Вы и писали — SSL 3 поддерживает, но не блочные шифры.
        • +1
          Если в Chrome полностью выключить TLS, то в списке шифров будут и блочные, а poodletest.com напишет «vulnerable». Однако!



  • 0
    Дождались: любимый хабрахабр в Хроме 45.0.2454.85 m вижу без стилей и js.
    в js-консоли на многих стилях и js: «ERR_SSL_VERSION_OR_CIPHER_MISMATCH»
    прав. кнопкой на любом > открыть в новом окне
    «A secure connection cannot be established because this site uses an unsupported protocol»
    • 0
      из настроек chrome://flags убрали SSL вообще – чтобы юзеры не открыли к нему доступ
    • 0
      Спалился пользователь Windows XP в 2015 году :). К теме статьи это отношения не имеет. Хабр не поддерживает SSL, только TLS.
      Поддержка SSL в Chrome полностью удалена на уровне исходников, самому не включить никак. Если и есть в 2015 году SSL-сайты, посетителей у них просто нет.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка