The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

В IPSec пакете strongSwan обнаружена серьёзная уязвимость

03.05.2013 23:43

Вышло экстренное обновление strongSwan 5.0.4, свободного пакета для создания VPN-соединений на базе протокола IPSec, используемого в Linux, Android, FreeBSD и Mac OS X. В новой версии устранена серьёзная уязвимость (CVE-2013-2944), проявляющаяся при использовании плагина "openssl" в выпусках с 4.3.5 по 5.0.3 включительно, и позволяющая установить соединение с использованием некорректного сертификата или сигнатуры. Суть ошибки состоит в том, что любая пустая, нулевая или ошибочная цифровая подпись ECDSA воспринималась как корректная. Обязательным условием успеха атаки является использование бэкенда OpenSSL (по умолчанию не используется и включается при сборке с опцией "--enable-openssl") и задействование аутентификации ECDSA (Elliptic Curve Digital Signature Algorithm).

  1. Главная ссылка к новости (https://lists.strongswan.org/p...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/36854-ipsec
Ключевые слова: ipsec, strongswan
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (14) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, anonymous (??), 23:57, 03/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это баг в strongswan или в openssl?
    Соответственно, затрагивает ли это, к примеру, openssh с ecdsa?
     
     
  • 2.2, ВовкаОсиист (ok), 01:19, 04/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    ошибка в strongSwan, т.к. не корректно обрабатывали ошибки OpenSSL.
     
  • 2.5, pavlinux (ok), 02:27, 04/05/2013 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Это баг в strongswan или в openssl?

    Не, не, не, только сильныйлебядь.




    valid = ECDSA_verify(0, hash.ptr, hash.len,
    - signature.ptr, signature.len, this->ec);
    + signature.ptr, signature.len, this->ec) == 1;  


    Вот нафига так сравнивать? Потом придут новые майнтенеры, начнут оптимизить, и покоцают == 1;  
    Неужели все ресурсы выжрет один добавленный if ?



    ret = ECDSA_verify(0, hash.ptr, hash.len, signature.ptr, signature.len, this->ec);
    if (1 == ret)
       valid = TRUE;


    Во, OpenSSL, специально для Равшанов и Джамшутов, в мане написал как надо делать!
    http://www.openssl.org/docs/crypto/ecdsa.html



    Third step: verify the created ECDSA signature using ... ECDSA_verify

    ret = ECDSA_verify(0, digest, 20, buffer, buf_len, eckey);
    // and finally evaluate the return value:

    if (ret == -1)
            {
            /* error */
            }
    else if (ret == 0)
            {
            /* incorrect signature */
            }
    else   /* ret == 1 */
            {
            /* signature ok */
            }



     
     
  • 3.8, VoDA (ok), 13:11, 04/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    На фоне таких ошибок становится понятно адекватность использования ТОЛЬКО boolean в операциях if.

    В С/С++ можно подсунуть int или любую цифру в if и не отловить некорректный ответ. В java только прямая проверка.

    PS а что они будут делать если придет возврат -2? ошибка? да, ошибка. но по логике man-ов будет signature ok.

    почему в мане они предлагают серию if, а не switch case, где default будет ругаться в логи? или хотя бы проверяли на ==1.

     
     
  • 4.13, pavlinux (ok), 01:55, 05/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > В С/С++ можно подсунуть int или любую цифру в if и не отловить некорректный ответ.

    Думать надо перед написанием программы, а не сразу топтаь клавиатуру.
    Если не твоя, внешняя функция возвращает три результата,
    то ты ОБЯЗАН обработать все три результата, а не оставлять на авось
    и модальные округления, типа 23 mod 12 тоже 11 будет, и пофиг утра или вечера.

    > В java только прямая проверка.  PS а что они будут делать если придет возврат -2?

    Куда придёт? Откуда?

    > почему в мане они предлагают серию if, а не switch case, где
    > default будет ругаться в логи? или хотя бы проверяли на ==1.

    Ты каким местом читаешь? В серии if-elif-else именно это и есть! :)

     
  • 3.12, Аноним (-), 20:32, 04/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Пусть используют установку побитовых-масок в макросах и не выеживаються
     
  • 3.16, Аноним (-), 12:50, 08/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    В твоем примере ошибка. valid - не инициализирован. И нафига тебе if, в оригинале очень даже годно написано.
     

  • 1.6, Аноним (-), 02:30, 04/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это ж трындец, товарищи!
     
     
  • 2.15, Аноним (-), 16:35, 05/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Это ж трындец, товарищи!

    Этому багу сто лет в обед. Его воспроизводят и воспроизводят. Это NULL authentification.

     

  • 1.7, бедный буратино (ok), 03:14, 04/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Вот так всегда - ждёшь уязвимости в php, а получаешь в IPSec. Не гневай Господа ямой, и сам туда не попадёшь.
     
  • 1.9, Дима (??), 13:18, 04/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Affected are only installations that have enabled and loaded the OpenSSL crypto backend (--enable-openssl). Builds using the default crypto backends are not affected.


    Использую libgmp (http://gmplib.org), а не openssl.

     
  • 1.10, arisu (ok), 18:52, 04/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    очередные «оптимизаторы» не читают документацию. молодцы, они В Тренде.
     
  • 1.11, Аноним (-), 19:25, 04/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Тэги: ШГ, УГ, апинастос, гвано, ссанина, мазоль, тваражог_солмнана, щвабботка
     
     
  • 2.14, pavlinux (ok), 12:29, 05/05/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Тэги: ШГ, УГ, апинастос, гвано, ссанина, мазоль, тваражог_солмнана, щвабботка

    Это чё, из серии - хотел пофлудить, но мозга не хватило?

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру