1. Java / Говнокод #28305

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    import java.security.*
    
    var keys = KeyPairGenerator.getInstance("EC").generateKeyPair();
    var blankSignature = new byte[64]; // zero bytes
    var sig = Signature.getInstance("SHA256WithECDSAInP1363Format");
    sig.initVerify(keys.getPublic());
    sig.update("Hello, World".getBytes()); // anything
    sig.verify(blankSignature); // true

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

    https://neilmadden.blog/2022/04/19/psychic-signatures-in-java/

    Запостил: bormand, 31 Июля 2022

    Комментарии (30) RSS

    • Вроде не выкладывали тут ещё этот бекдор от оракла?
      Ответить
    • $8 ==> true

      Пиписюнчик.

      Джавушки не ма-те-ма-ти-ки. Они не обязаны разбираться в свойствах нуля.
      Ответить
      • > Джавушки не ма-те-ма-ти-ки.

        Интересно, растишки тоже по этим граблям проедутся в своём формально корректном языке?
        Ответить
        • > Джавушки не ма-те-ма-ти-ки.

          Интересно, растишки тоже по этим граблям проедутся в своём формально корректном языке?

          P.S. The ECDSA implementation contained in this crate has never been independently audited for security. Отличное вступление.
          Ответить
          • Не, эти походу и на 0 проверили и на вылет за порядок курвы.
            Ответить
    • Странная Jawa. К ним разве var завезли?
      Ответить
      • Это новая хрень, совсем недавно ввели, в 2018-м; о ней ещё неслыханное количество срачей джавушков было.
        Ответить
        • > неслыханное
          Тото мы не слышали.
          Ответить
          • На ГК точно были смешки над петухами, которые путают виды типизации и с важным видом заявляют, что-де «var» уничтожает статическую типизацию и превращают «Java» в «JavaScript».
            Ответить
        • Там еще сразу же сформировалась группа дебилов, которая стала писать: "var это отказ от статической типизации, будет как в JavaScript"

          То есть это такие дебилы которые даже на фоне джавушков дебилы
          Ответить
          • В С++ добавляют auto, крестовики:
            «Ну наконецто, можно будет не писать for(std::unordered_map<std::string, std::vector<std::string>>::const_iterato r it = some_map.cbegin(); ..., а сразу фигачить for(auto it = some_map.cbegin(); ...»

            В Жабу добавляют var, жавушки:
            «Такое слово есть в жаваскрипте, не хотим, хотим жрать стекло...»
            Ответить
        • > Это новая хрень, совсем недавно ввели, в 2018-м

          Именно поэтому я за «Java 8». Там нет никаких «var».

          > an attacker can trivially and completely bypass them if your server is running any Java 15, 16, 17, or 18 version before the April 2022 Critical Patch Update (CPU).

          > If you have deployed Java 15, Java 16, Java 17, or Java 18 in production then you should stop what you are doing
          Ответить
          • Ну то есть шестую джаву еще писали программисты (скучные, медленные, неприкольные) а потом наконец хипстеры взяли всё в свои руки?
            Ответить
        • JawaScript-ухи начали блеваться от var-а, а эти только ввели его. Какой багор )))
          Ответить
    • ООП'ушки опять запутались в своих обсракциях и надеялись, что ниже должна быть проверка на ноль, или тупо не знали?

      З.Ы. Кукареку! Борманд сорвался!
      Ответить
      • Нет, это просто очередной java bounds check elimination
        (если кто ещё помнит этот их багор).

        Благодаря выпиливанию проверок, код на «Jawa» работает быстрее чем его тормозные С/С++ аналоги.
        Ответить
      • Судя по количеству записей от борманда, абстиненция была суровой.
        Ответить
    • Зачем вообще говнокодерам разрешают в криптографию? Разве это не специальные Bernsteinы должны писать?

      Говнокодеры пускай кнопочки на веб-сайте рисуют
      Ответить
    • Если вернулся Борманд, то вернулся и ISO.
      Ответить
    • Долбоёбы переводили с сишки, где был расчёт на инициализацию мусором из памяти?
      Ответить
      • > расчёт на инициализацию мусором
        > расчёт на инициализацию мусором
        > расчёт на инициализацию мусором

        Извините, но безопасность моего кода зависит от UB
        Ответить
      • Нет, долбоёбы переводили с «C++» и выкинули «ненужную» проверку, которую туда добавили какие-то скучные бумеры-параноики.
        Ответить
      • Тред не читай
        @
        Сразу отвечай

        Это код, эксплуатирующий уязвимость. Уязвимость в том, что нулевая подпись проходит. В сишке был нормальный чек на ненулёвость.
        Ответить
        • Ник не читай
          @
          Уёбку отвечай
          Ответить
        • > чек на ненулёвость

          После чего некоторые либы выебли по второму разу ненулевой универсальной подписью т.к. проверка должна быть не просто на нулёвость, а по модулю q...

          Джавушок не обязан знать ма-те-ма-ти-ку.
          Ответить
    • Наивонючейшее говно на говнокоде - bormand - опять всплыло? Фу-фу.
      Ответить
    • Ураа, bormand вернулся!
      Ответить
    • #bormand_govno
      Ответить

    Добавить комментарий