Security Week 44: NordVPN, TorGuard и половинчатый взлом

    На прошлой неделе широко обсуждался взлом VPN-провайдера NordVPN, а также пары других подобных сервисов (в частности, упоминался TorGuard). Источником информации стал Твиттер, сообщения оттуда затем были подхвачены СМИ (Techcrunch, Хабр). NordVPN и TorGuard по следам этих статей опубликовали опровержения: в обоих случаях имела место утечка приватного ключа (в одном случае — в 2018 году, в другом ключ был украден еще в 2017-м). Что это был за ключ и какие последствия такая утечка имеет (или имела в прошлом) для пользователей — тут мнения разошлись. Факты, обнародованные NordVPN, говорят о том, что скомпрометирован был единственный из сотен серверов компании, и утечка ключа не подвергала риску даже тех клиентов, которые подключались через взломанный сервер к сети.

    Ситуация осложняется, скажем так, довольно агрессивным маркетингом VPN-сервисов с акцентом на безопасность пользовательских данных. Поэтому и для VPN-провайдеров подобные новости крайне чувствительны, и в соцсетях они обсуждаются с излишним градусом драмы. В отдельном сообщении NordVPN о мерах по улучшению защищенности сервиса сделан правильный вывод: стопроцентного иммунитета от взлома не бывает. Это относится как к самим провайдерам VPN, так и к пользователям. И дело тут не в том, какой именно вариант VPN используется: коммерческий, бесплатный или свой собственный сервер с преферансом и поэтессами.


    В оригинальном сообщении в Твиттере приводится ссылка на утекший приватный ключ, принадлежащий NordVPN, срок действия которого закончился в октябре 2018 года. Этот ключ, по утверждению NordVPN, был украден со взломанного сервера компании в марте 2018 года. Это был один из более чем трех тысяч серверов, через который пользователи VPN-сервиса могут перенаправлять свой трафик. Опять же по данным NordVPN, ошибку в конфигурации допустил сам хостер — злоумышленники получили доступ к серверам клиентов через панель управления. Вместо того чтобы сообщить об этом клиентам, хостер молча удалил скомпрометированную учетную запись. О взломе в NordVPN узнали 13 апреля 2019 года, после чего сразу же удалили сервер.

    Атакующему удалось получить доступ к приватному ключу. По словам NordVPN, cрок действия этого сертификата истек еще на момент кражи, но тут возникает нестыковка с датами. Возможно, речь идет о том, что ключ всплыл в сети уже после конца срока действия. В любом случае ключ не мог использоваться для дешифровки трафика клиентов. Однако, по версии в твите выше и по словам анонимного комментатора в статье на TechCrunch, проблема куда серьезнее. Цитата из TechCrunch: «Это признак полного удаленного взлома инфраструктуры этого провайдера».


    Кому верить? С одной стороны, есть достаточно подробное описание инцидента от NordVPN, с другой — комментарии предпочитающих не называть себя экспертов и пользователей Твиттера. Скорее всего, ничего серьезного и правда не произошло. Доступ к серверу не привел к утечке информации о трафике пользователей, которые через этот сервер подключались: NordVPN в любом случае не хранит логи. Не утекли и учетные данные, так как приложения NordVPN не передают на сервер реальные логины и пароли. Но подождите, у NordVPN и других провайдеров есть возможность подключиться к серверу напрямую! Как в таком случае дела обстоят?

    В лучшем случае украденный ключ мог использоваться в том, что NordVPN называет «сложной MITM-атакой». То есть теоретически кто-то мог с помощью еще актуального ключа поднять поддельный сервер, якобы принадлежащий NordVPN, заманить на него пользователя с помощью подмены DNS и украсть все передаваемые данные. Возможен такой сценарий? Вероятность не нулевая. Был ли он реально использован? Какая доля пользователей NordVPN могла пострадать, если был?

    Вся эта дискуссия осложняется подходом многих VPN-сервисов к рекламированию своих услуг. Они склонны преувеличивать преимущества VPN-соединения, говорят о полной безопасности ваших данных, хотя на самом деле стопроцентной безопасности не предоставляет ни одна технология. Конкуренция на рынке VPN высокая, и в результате происходят обсуждения типа «безопасность нашего VPN безопаснее, чем у конкурентов», взаимные обвинения и прочие события, далекие от технологий.


    Любое сообщение об уязвимости воспринимается и самими провайдерами, и их клиентами, и массовкой в соцсетях как некий конец света, что не совсем правильно. В итоге получается вот что: те, кто говорил о «взломе всей инфраструктуры», никаких убедительных доказательств не предоставили. NordVPN достаточно подробно описал проблему и методы ее решения, но в их материале почти нет технических деталей инцидента. Не факт, что собственный VPN-сервер — это, как подсказывают некоторые, правильное решение. Оно требует технических навыков, и по факту просто немного меняется набор рисков. Надо не забывать, что любое средство защиты решает какую-то одну проблему и не способно избавить от всех угроз в мировом масштабе. Что вовсе не повод полностью отказываться от защиты.

    Что еще произошло:

    Из Apple App Store удалили 18 приложений, которые в фоне накручивают посещаемость сайтов. Вредоносная активность происходила с задержкой, что позволило приложениям пройти аудит компании Apple.

    Google Chrome обновился до версии 78. Закрыта пара серьезных уязвимостей; исправлена ошибка, приводящая к подмене URL. Обещанное ранее бета-тестирование функции DNS-over-HTTPS решили отложить до следующей версии. Аналогичная фича появилась в Firefox в сентябре, а в свежем релизе Firefox 70 начали блокировать межсайтовые куки соцсетей.

    Эксперты «Лаборатории Касперского! выпустили обзор угроз для пользователей игровой платформы Steam. Приведены интересные примеры фишинга, который учитывает механизм двухфакторной аутентификации.

    Интересная уязвимость обнаружена в роботизированных ассистентах, использующихся в японской сети отелей. Баг позволяет перехватывать потоки с видеокамеры и микрофона устройства. Эксплуатация требует физического доступа — сначала взламывается устройство в отеле, потом устраивается слежка.

    Обнаружена уязвимость в дозаторе еды для котиков от Xiaomi. Позволяет удаленно вывести устройства из строя. Или устроить питомцам праздник живота.
    «Лаборатория Касперского»
    266,77
    Ловим вирусы, исследуем угрозы, спасаем мир
    Поделиться публикацией

    Комментарии 5

      +6
      В ситуации с NordVPN есть два интересных момента, о которых никто не упоминает.

      Момент №1: кроме сертификата и ключа для *.nordvpn.com коммерческого удостоверяющего центра, который использовался для squid и, видимо, IPsec, на сервере был некий ca.key от OpenVPN.
      -----BEGIN PRIVATE KEY-----
      MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDXkEwyH/x0RS+8
      YGx+JNU9+rfkc0mUR7iR/KIns4qPLuDouAnugz3ACtk4rb9vMKiqcfj6Kdf5CzzZ
      XWyL8svTDEEePve+pCmCQaXl1EqPx505DgINmE3JpgLEz2hkz8yYlPcsyl2jiBB5
      YqhxFJAwb92wJdhDKv5YbrUuv+ncSt1n/Q2IT1vmsCjSjqD60TmigEzLhEw/J/GX
      95l/UHPy7fZ5bHqHsaHV/jrh0XGxOncTCePErV1srhhJ4ml0vJpC6muowI3ceK4V
      8khMI/0VZCByswbkIA7IXhvW7iyRwono5mP7T2N1bR3UJ08d8xCX/E3GBO63Jx7v
      xacUNvP/AgMBAAECggEAL5MpPebRUNf0MR8W0sBOT9+FtmW7V358vbuEDj8R1YgD
      G1mC16Eff8LlLh0qot+aWgPNb2jMwao5Q7/atQhg87NAq+w5wVl5z8WtV4wC6Lil
      enIdAeMbR+XbtpQP9i/md8ZoxvnisLTW7fNYOZzQNeB6jOXNVQWoHNxSIH86neN/
      8HUyPu07WaAaASUzLYoIZ1K86LIigSIYgjIYFsviHOMf7F+R0gTs23rQKIq9BBgg
      yFhjMN0bjh2p7GqGTH86s+lV+74cy+8HctMDJofySmeTGynoPmqH8zAgAAbJegrn
      MOkvW9sx2OLubiOuKP/kXe77NKcQ0bzpmLAdQ2qIAQKBgQD+3n0zVXyzmsPl3nM3
      VOLLUyHmuu6ThXMjZJCCDPgUss2/KhGKVuECLn+R1Hum0Bo3uGmjHlZg95TJ9MbN
      itpC+BCBXZOzHb+PLaNStSDm4ZFoNCuoZcTQmrNQogrE/UM7IfAY93GE3pGIhMOE
      j33PBaMGFZlHgW8M+hommkId1wKBgQDYhSkmTXObtwwygbbOIXMjzuNrzy+TkfqU
      69oqi8L5tvigYXzz2A7xxWBvygb37TY/6Xj3/Y5FUhqUYla/MAQyI7M6D+q4lbwt
      CLCNfeUyMjuK4tRV2ca9pwLO4qTvfp1Nt/JS2uawW5ZbPPIEGhpmbKAyq0hw9yzT
      RsW7mYkGGQKBgQCySceBYnrSVSBWrA8jFMF2BFiBxCBimAbcKlwgbZwZNp9Q68fL
      Y00Rrp9UzzQUlBzS/7D+B5nbSTYPNKjhXhGiqU86f9BziwrWyNEoaUZz3DVQlLY5
      nb9ZQe7QKBqqhJRESFBh1q7ViLB7tIvlLk+Ow12wQumvqK6bgFVMzboUjwKBgBdE
      wDZYjnsGge4PmJiwaZJIkpIsct12C6rjac+2s15otnFt6KK/7mM3JfT9jiAowvK9
      YX2tJxP2DdsyckYbn+fPhFxSB5SMqutgCrE5/V6WnWWAmPcc70nEX/3hx33haoBG
      q2kSE0aSoSbu9sdQEtQ9Cj5HwAI73fpambdeeaZJAoGBAOlP/D5cCuRB+BtrsxiA
      EEaNY7u0xocP1FsALuP5rw3uw0wQOso/WPqvXXf6m/NeRQ7/eYPQwst4qDkukmMp
      GV8oWrcINXsjfrquo0w+/dRodidQv67QH/z4XyXQ/Q8A1y716HjyYaje1JIh83Od
      pcNR9NnJEdrkhPGJoLgCOl/C
      -----END PRIVATE KEY-----

      Именем ca.key обычно называют приватный ключ от корневого сертификата OpenVPN. К нему нужен еще файл самого сертификата ca.crt, но его нет. Сертификат от этого ключа в текущей конфигурации серверов NordVPN не используется. Используется следующая структура PKI:
      1. C = PA, O = NordVPN, CN = NordVPN Root CA
      2. C = PA, O = NordVPN, CN = NordVPN CA3
      3. CN = xxxyyy.nordvpn.com

      Сертификаты NordVPN Root CA и NordVPN CA3 не подходят к ca.key (modulus не совпадает). Причём у CA3:
      Not Before: Jan  1 00:00:00 2018 GMT
      Not After : Dec 31 23:59:59 2019 GMT

      Т.е. текущий CA (CA3) был создан до установки скомпромертированного сервера (31 января 2018). Даты Not Before и Not After, по всей видимости, специально устанавливаются с точностью до года, чтобы было проще, но в интернете есть пост от 2 января 2019 года, где уже фигурирует этот CA3, значит, он использовался до того, как NordVPN узнал о факте компрометации (13 апреля 2019) сервера fi30.nordvpn.com и используется до сих пор.
      2019-01-02 12:07:15 VERIFY OK: depth=2, C=PA, O=NordVPN, CN=NordVPN Root CA
      2019-01-02 12:07:15 VERIFY OK: depth=1, C=PA, O=NordVPN, CN=NordVPN CA3
      2019-01-02 12:07:15 VERIFY KU OK


      Не знаю, что думать. Наверное, это какой-то старый файл, который давно не используется (но почему он до сих пор копируется на серверы, если конкретно этот сервер, с которого утекли ключи, был установлен 31 января 2018?), не говоря уже о том, что ca.key в принципе не используется на серверах и не должен копироваться ни при каких обстоятельствах. А может, это предыдущий CA2?

      Если найти сертификат к этому ключу, и этот сертификат выдан корневым удостоверяющим центром NordVPN Root CA и действующий, то можно будет совершать атаку типа «человек посередине» на любой сервер NordVPN.

      Момент №2: Тот, кто обладает публичным сертификатом от скомпрометированного сервера fi30.nordvpn.com, сможет тоже совершать атаку типа «человек посередине» на любой сервер NordVPN, потому что OpenVPN по умолчанию не проверяет Common Name сертификата, а в клиентских конфигурационных файлах OpenVPN от NordVPN эта опция не включена, а ключ от него также утёк. Сервер сейчас отключен, но наверняка кто-то сохранил сертификат или записал трафик подключения (OpenVPN передаёт сертификаты в открытом виде, примерно так же, как обычный TLS).
      У NordVPN не используются ни листы отзыва сертификатов (CRL), ни сервер проверки статуса (OCSP). Судя по всему, серверные сертификаты выписываются со сроком действия в год.

      Вывод: если предположить, что fi30.nordvpn.com использовал CA3, то получается, что злоумышленник, обладающий публичным и приватным ключом от сервера fi30.nordvpn.com может совершать атаку на любой сервер OpenVPN от NordVPN до 31 декабря 2019 года, и NordVPN не может ничего с этим сделать, кроме как добавить этот сертификат в список отзыва вручную, в конфигурационный файл OpenVPN клиента. Очевидно, они могут это сделать автоматически в своей программе-клиенте, но пользователи, которые не пользуются программой-клиентом, будут вынуждены перекачать обновленные конфигурационные файлы OpenVPN вручную.

      files.catbox.moe/vtxeiz.zip ← архив файлов, если кому хочется поразбираться.
        0
        по умолчанию не проверяет Common Name сертификата, а в клиентских конфигурационных файлах OpenVPN от NordVPN эта опция не включена
        Это про какой параметр речь? remote-cert-tls server? Он правда не common name проверяет, но ничего другого в голову не пришло.

        OpenVPN передаёт сертификаты в открытом виде, примерно так же, как обычный TLS
        А tls-crypt разве не исправляет эту ситуацию?
          0
          Это про какой параметр речь?
          verify-x509-name

          А tls-crypt разве не исправляет эту ситуацию?
          Исправляет, но это не проблема сама по себе. При использовании tls-crypt также можно извлечь сертификаты из трафика, ведь они публичные по натуре.
            0
            О, классный параметр, спасибо. Надо бы вообще сделать какой-то список лучших практик по конфигу openvpn, потому что много из этого как-то ускользает от глаз. Ну, так то оно есть в reference manual, но далеко не все очевидно и сухая выдержка была бы полезной.
        0
        А где выпуск за прошедшую неделю? И сегодня празднуете?))

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

        Самое читаемое