The OpenNET Project / Index page

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

Раздутый отчёт об уязвимости вынудил разработчика node-ip перевести репозиторий в архивный режим

01.07.2024 09:28

Фёдор Индутный (Fedor Indutny), автор платформы Io.js (форк Node.js), входящий в технический комитет, управляющий разработкой Node.js, попытался привлечь внимание к проблеме с назначением CVE-идентификаторов некорректным отчётам об уязвимостях, не соответствующим действительности или неадекватно представляющим уровень опасности. Номер CVE, применяемый для идентификации уязвимости, присваивается без должной проверки и без консультации с разработчиками уязвимых программ, что приводит к появлению злоупотреблений, в которых под видом опасных уязвимостей преподносятся несущественные ошибки, на деле не представляющие угрозу безопасности.

Ложные CVE не только подрывают репутацию проектов, но и создают значительную дополнительную нагрузку на сопровождающих, которым приходится разбирать потоки писем и сообщений, ссылающихся на подобные CVE. Самое неприятное в подобных ситуациях то, что разработчики не могут оспорить присвоенный уровень опасности или добиться отмены CVE.

В случае с Фёдором проблема коснулась Node.js-библиотеки node-ip, которая до публикации отчёта об уязвимости загружалась примерно 30 млн раз в неделю, но за 5 месяцев число загрузок снизилось до 17 млн в неделю. Предполагается, что наличие отчёта о критической уязвимости способствовало падению популярности библиотеки.

Библиотека node-ip используется в качестве зависимости у более 3500 проектов, при сборке которых из-за ложного CVE при выполнении команды "npm audit" выводится предупреждение. Поток жалоб и сообщений, связанных с ложным CVE, привёл к тому, что после нескольких месяцев попыток добиться изменений уровня опасности в CVE разработчик node-ip перевёл репозиторий проекта в архивный режим, заморозив процесс разработки (в архивном режиме репозиторий находился 5 дней, и несколько часов назад этот режим был убран).

Информация об уязвимости CVE-2023-42282 была опубликована в начале февраля, но до этого выявивший проблему исследователь с декабря 2022 года пытался добиться получения вознаграждения на платформе Huntr (вероятно уровень опасности завышают так как он влияет на вознаграждение). Судя по информации из отчёта об уязвимости, представители Huntr более года пытались связаться с разработчиками node-ip для устранения проблемы и лишь затем раскрыли детали публично.

Суть проблемы в том, что предоставляемые библиотекой функции isPublic() и isPrivate() обрабатывают только каноническое представление IP-адресов, что позволяет добиться неверного результата проверки вхождения адреса в диапазоны для внутреннего использования (10.x.x.x, 192.168.x.x., 127.x.x.x, 172.16-31.x.x) при передаче адреса в других форматах, например, 0x7f.1, и 127.1 вместо 127.0.0.1. Утверждалось, что проблема может использоваться для обхода SSRF-защиты и проверок при предоставлении доступа к ресурсам. В CVЕ проблеме был присвоен критический уровень опасности (9.8 из 10), а в отчёте на GitHub проблема была отмечена как опасная.

Автор node-ip выразил несогласие с тем, что проблема является опасной уязвимостью. В частности, для совершения атаки необходимо добиться передачи своего значения в функции isPublic() и isPrivate(), в то время как информацию об IP-адресе подключающегося клиента, как правило, получают из системных функций или переменной окружения web-сервера, которые изначально выдают только корректные значения. Ситуация, когда непроверенные данные о проверяемом IP-адресе передаются через внешние формы ввода или подконтрольные атакующему источники, выглядит умозрительной.

Из-за обилия запросов на исправление в середине февраля были сформированы корректирующие релизы node-ip 1.1.9 и 2.0.1, в которых добавлены проверки с учётом нетипичных форм представления IP-адресов. Тем не менее, с учётом популярности проекта поток связанных сообщений и запросов пользователей не прекратился. В БД MITRE уязвимость и поныне остаётся помечена как критическая, но представителей GitHub удалось убедить снизить уровень опасности в БД GitHub Advisory Database до минимального.

Из недавних отчётов с завышенным уровнем опасности также можно отметить уязвимость в LibreOffice 24.2.4 CVE-2024-5261, которой присвоен критический уровень опасности (10 из 10). Проблема, исправленная несколько дней назад, затрагивает библиотеку LibreOfficeKit, позволяющую обращаться к возможностям LibreOffice из внешних приложений на C/C++, например, вызывать функции для преобразования форматов. Суть уязвимость в использовании по умолчанию настройки libCurl (CURLOPT_SSL_VERIFYPEER=0), отключающей проверку сертификатов при загрузке внешних ресурсов по HTTPS, например, указанных в документе внешних изображений.

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: В CVE опубликованы отчёты о ложных уязвимостях в curl, PostgreSQL и других проектах
  3. OpenNews: Внедрение двухфакторной аутентификации в PyPI привело к инциденту с удалением популярного пакета
  4. OpenNews: Инцидент с захватом прав на NPM-модуль привёл к сбою в работе проектов, использующих NPM
  5. OpenNews: Удаление Gem-пакета в знак протеста привело к проблемам в ряде систем на базе Chef
  6. OpenNews: Проблемы из-за подготовленных AI-инструментами отчётов об уязвимостях
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/61466-cve
Ключевые слова: cve, node.js
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (120) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:00, 01/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –12 +/
    фёдор не прав, неизвемстно откуда будут данные, не ему судить как применяется библа
     
     
  • 2.3, Аноним (3), 10:08, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Проверять корректность данных должно приложение, а не библиотека. То что при обращении к библиотечному вызову не была использована функция приведения IP к нормальной форме - проблема разработчика приложения.
     
     
  • 3.5, Аноним (5), 10:13, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    И зачем такая библиотека, которая может вернуть что-то не предсказуемое?
     
     
  • 4.33, нах. (?), 11:25, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    для того чтобы люди, умеющие валидировать юзерские данные на стадии их ввода - могли пользоваться этой библиотекой. Им-то она вернет - предсказуемое.

    (опционально - а альтернативно-одаренные, считающие что сопельки им должны вытирать все окружающие - страдали)

     
     
  • 5.66, Аноним (66), 12:47, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > люди, умеющие валидировать юзерские данные на стадии их ввода - могли пользоваться этой библиотекой. Им-то она вернет - предсказуемое

    Чел, айпишники вида "0x7f.1", и "127.1" валидны согласно RFC. Что ты собрался валидировать?

    И вот функции isPublic() из статьи *буквально* возвращают разные результаты в зависимости от представления одного и того же IP. Это и есть чистая непредсказуемость, о которой писал человек выше.

     
     
  • 6.73, нах. (?), 13:11, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > Чел, айпишники вида "0x7f.1", и "127.1" валидны согласно RFC.

    но я не буду тратить время на написание предупреждения пользователю "оно конечно валидно согласно рфц, но я не уверен что ты просто не крошишь батон на клавиатуру - поэтому введи нормальную dotted-decimal запись".  И тем более не буду такое передавать в библиотечную функцию в режиме "авось прокатит".

    Чего и всем желаю. Не все стандарты (и тем более - "rfc") надо соблюдать побуквенно.

     
     
  • 7.75, Аноним (66), 13:33, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > но я не буду тратить время на написание предупреждения пользователю [...].  И тем более не буду такое передавать в библиотечную функцию в режиме "авось прокатит".

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

    https://en.m.wikipedia.org/wiki/Directory_traversal_attack

     
     
  • 8.79, нах. (?), 13:59, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    необучаемы те кто не фильтруют все эти прекрасные на этапе получения вв... текст свёрнут, показать
     
     
  • 9.90, Аноним (5), 14:29, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    П - производительность Не, не слышали ... текст свёрнут, показать
     
  • 7.77, Аноним (66), 13:40, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Не все стандарты (и тем более - "rfc") надо соблюдать побуквенно.

    Да что ты? А как, по твоему, нужно соблюдать стандарты?

     
     
  • 8.80, нах. (?), 14:00, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    повторяю - там где у тебя есть untrusted input - никак их не нужно соблюдать ... текст свёрнут, показать
     
  • 8.93, 1 (??), 15:01, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А как ты проводишь валидность e-mail адреса По RFC 822, 5321, 5322 Или тупо ... текст свёрнут, показать
     
  • 7.94, Аноним (94), 15:14, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Незнание закона не смягчает вины. Вроде всем известная ещё с детства фраза. Вполне переносима на любую сферу деятельности и правила/стандарты, которые в ней установлены.
    В данной ситуации не прав Федор, поскольку правила определены, а он им не следует.
     
  • 6.111, YetAnotherOnanym (ok), 16:13, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > валидны согласно RFC

    И что с того? RFC - это для взаимодействия чужого с чужим. Внутри софтины никто соблюдать RFC не обязан. Если автор либы прописал в мануале, что адрес IPv4 принимается только в формате N1.N2.N3.N4, где Nn - десятичные числа от 0 до 255, то либо автор использующей софтины должен озаботиться приведением IP-адреса к этому формату, либо искать другую либу.

     
     
  • 7.115, Аноним (66), 16:31, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > И что с того? RFC - это для взаимодействия чужого с чужим.

    Библиотека буквально принимает чужие IP извне.

    > Если автор либы прописал в мануале, что адрес IPv4 принимается только в формате N1.N2.N3.N4,

    Нет, не прописал.

     
  • 3.9, pofigist (?), 10:20, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Первое что должна сделать любая функция - убедитьсячто ей переданны корректные данные.
    Тот кто не понимает зачем это нужно - необходимо запретить птсать код под угрлзой расстрела
     
     
  • 4.18, Аноним (18), 10:38, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это если нет статической типизации. Если библа принимала "любую строку", то проверять должна. Если библа принимала свой же тип IPv4Address и явно прописывала это в доках или в d.ts, то проверять уже не должна. Второе предпочтительнее, так как рантайм-проверки небесплатные.
     
     
  • 5.112, ОШИБКА Отсутствуют данные в поле Name (?), 16:16, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так он сделает тип string и скажет, что валидация не его проблема.
     
  • 4.25, Аноним (25), 10:55, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Первое что должна сделать любая функция

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

    Хотя, если нам нужны более точные проверки, например, мы проверяем соотвествие ip тому что указан в бд, Тогда штатная проверка нафиг не нужна

     
     
  • 5.101, Аноним (101), 15:27, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В ещё более нормальных проектах не нужны эти костыли с двумя функциями и контракты можно описать системой типов и проверить на этапе клмпиляции
     
     
  • 6.107, Аноним (66), 15:58, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > контракты можно описать системой типов и проверить на этапе клмпиляции

    Как ты проверишь на этапе компиляции IP, который известен только в рантайме?

    Слышал звон, да не знаю, где он?

     
     
  • 7.135, Аноним (135), 23:01, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Жабаскриптер в треде? Система типов как раз и нужна, чтобы большинство рантаймовых проверок делать проверками при компиляции. Единственная рантаймовая проерка нужна во время создания объекта, а дальше всё уже проверено компилятором.
     
  • 4.131, Akteon (?), 22:22, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Робастная функция.Робастность подразумевает накладные умственные и организационные расходы и деградацию производительности.
    А с вашей логикой, надо все языки с динамической типизацией запретить, иначе а вдруг в библиотеку придет объект не того типа. И сериализацию до кучи.
     
  • 3.63, Аноним (66), 12:42, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > То что при обращении к библиотечному вызову не была использована функция приведения IP к нормальной форме - проблема разработчика приложения.

    IP в виде "0x7f.1" - это нормальная форма согласно RFC.

     
     
  • 4.87, Аноним (87), 14:11, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > IP в виде "0x7f.1" - это нормальная форма согласно RFC.

    В документации к библиотеке написано, что она на 100% поддерживает rfc? Если нет, то причём тут rfc? Этак можно и какой-нибудь Microsotf Coding Guidelines отыскать, где ip-ареса задаются текстом на хинди, и жаловаться, что она их не поддерживает.

     
  • 3.72, Аноним (66), 13:03, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Проверять корректность данных должно приложение, а не библиотека.

    Что проверять, если в буквально в статье написано, что у одного IP может быть разные представления? И все корректные.

     
  • 3.81, Сталин (?), 14:00, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    127.1 — это (сюрприз!) корректный адрес. попробуйте его пингануть, например.
     
     
  • 4.97, Аноним (94), 15:19, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С открытием Вас!
     
  • 2.6, Аноним (5), 10:14, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >  В CVЕ проблеме был присвоен критический уровень

    Больше всего проблема в этом.

     
     
  • 3.99, Аноним (94), 15:21, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И что в этом смущает? Поведение библиотеки не может быть названо предсказуемым, если для одного и того же адреса в разной нотации будет возвращен различный результат проверки.
     
  • 2.50, Аноним (50), 12:17, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, прав. Если требование функций библиотеки - "очищенные" данные на входе, то незачем нагружать данные функции дополнительными проверками, раздувающими код и снижающими быстродействие.
     
     
  • 3.71, Аноним (66), 12:55, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Нет, прав. Если требование функций библиотеки - "очищенные" данные на входе, то незачем нагружать данные функци

    Нет, не прав. "0x7f.1" - это валидное представление IP, здесь не нужно ничего "очищать".

     
     
  • 4.130, Akteon (?), 22:18, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, напишем в документации, например
    <IP4>::=<IP4_num>.<IP4_num>.<IP4_num>.<IP4_num>
    <IP4_num>::=<first_digit><digit><digit>
    <first_digit>::=0|1|2
    <digit>::=0|1|2|3|4|5|6|7|8|9
    И дальше сами,все сами
     
     
  • 5.147, Аноним (1), 14:51, 02/07/2024 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.70, Аноним (66), 12:51, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > фёдор не прав, неизвемстно откуда будут данные, не ему судить как применяется библа

    Сори, чел, это Опеннет, поэтому тебе налепят минусов.

    Местных комментаторов не волнует, что у одного и того же IP может быть разное представление, и г*код Федора работает только с одним из них, ибо стандарты для дураков.

     
     
  • 3.82, Аноним (1), 14:01, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    их минусы проходят сквозь меня и не могут мне навредить
     

     ....большая нить свёрнута, показать (35)

  • 1.2, КО (?), 10:00, 01/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Обиделся, но исправил, лол
    Смузи не поперхнитесь там
     
     
  • 2.67, Гнутый (?), 12:49, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Глянул код, это в целом смузи-библиотечка, строчечки петушатся регэкспами на каждом шагу.

    Вон цикл конверта ipv6 в строку, добавить туда условие для свёртки повторяющихся нулей? Нет, лучше потом прогреть проц регекспами. Кто-то, бедный, потом будет логгировать айпишники и спрашивать почему LA зашкаливает.

      } else if (length === 16) {
        // IPv6
        for (let i = 0; i < length; i += 2) {
          result.push(buff.readUInt16BE(offset + i).toString(16));
        }
        result = result.join(':');
        result = result.replace(/(^|:)0(:0)*:0(:|$)/, '$1::$3');
        result = result.replace(/:{3,4}/, '::');
      }

      return result;
    };


    А потом ещё жалуются, что для сборки фронтового приложения i7 нужен и собирается дольше, чем с++ с шаблонами. Короче, типичное js-программирование.


    const ipv4Regex = /^(\d{1,3}\.){3,3}\d{1,3}$/;
    const ipv6Regex = /^(::)?(((\d{1,3}\.){3}(\d{1,3}){1})?([0-9a-f]){0,4}:{0,2}){1,8}(::)?$/i;
    ...

      return /^(::f{4}:)?127\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/
        .test(addr)
        || /^0177\./.test(addr)
        || /^0x7f\./i.test(addr)
        || /^fe80::1$/i.test(addr)
        || /^::1$/.test(addr)
        || /^::$/.test(addr);
    };

     
     
  • 3.85, Аноним (87), 14:06, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вы вот прям уверены, что в жс развилка в цикле будет быстрее регекспа? Или у вас прувы есть?
     
     
  • 4.89, Гнутый (?), 14:28, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Будут ли быстрее три ифа чем движок регэкспов?
    Надеюсь это был юмор...
     
     
  • 5.100, Аноним (94), 15:27, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так и ифы не нужны, когда case/switch ещё быстрее пройдет ветвление.
     
  • 5.102, Аноним (87), 15:29, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Мы всё ещё про яваскрипт говорим? Можете как-то подтвердить, что парсинг, интерпретация и выполнение вложенного ифа физически сводится только к трём ифам в бинарном коде?
     
     
  • 6.113, Гнутый (?), 16:20, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Теперь я понимаю, что это был не юмор, но от этого менее смешно не становится))
     
  • 4.103, Аноним (94), 15:30, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не поленитесь хоть раз написать тестовый код и с регексом и с ветлением, и самостоятельно убедиться насколько медленный первый.
     
     
  • 5.114, Гнутый (?), 16:25, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да понятно же, что "писать" он умеет только ручкой на бумаге. Сравнивать работу движка регэкспов который по сложности О-большое (если брать самую существенную операцию для этого алгоритма - сравнение символов) переплюнет любые ифы в цикле уже на этапе парсинга самого регэкспа - это даже для троллинга слишком толсто.
     
     
  • 6.141, arisu (ok), 03:31, 02/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    справедливости ради — современные движки обычно препарзят это всё на горячем пути.

    что, конечно, не отменяет тормозов даже зажитованой nfa.

     

  • 1.4, Аноним (18), 10:09, 01/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +15 +/
    > 0x7f.1, и 127.1 вместо 127.0.0.1

    Спасибо дидам за эту приколюху в спеках.

     
     
  • 2.11, onanim (?), 10:25, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    это да, рофлец.

    > $ ping 1234567890
    > PING 1234567890 (73.150.2.210) 56(84) bytes of data.
    > ...
    > --- 1234567890 ping statistics ---
    > 3 packets transmitted, 3 received

    сто лет назад так прятали бэкдоры в пхп скриптах, чтобы регексп [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} не нашёл

     
     
  • 3.104, Аноним (94), 15:34, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А что мешает использовать ([0-9]{1,3}\.){3}[0-9]{1,3}, сугубо незнание или любовь к гуавно-коду
     
     
  • 4.136, Аноним (136), 23:16, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    этот регексп тоже не найдёт IP 1234567890
     
  • 2.91, Аноним (91), 14:49, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    "Диды" для людей писали и заботились об удобстве. Они не думали, что спустя годы появится целая индустрия уродов, павнящихся друг с другом в бэкдоры за деньги и портящих всем жизнь. А общество будет их разрушительную деятельность терпеть и вознаграждать.
     
     
  • 3.98, Аноним (18), 15:19, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > заботились об удобстве

    Да, я прям преисполняюсь удобством, когда вместо 127.0.0.1 пишу 0x7f.1. А еще это удобно сопровождать. IPv4Address.parseFromString(), который вместо простого split('.').map(parseInt), assert(len == 4) превращается в простыню на несколько экранов — это же так удобно!

    > Они не думали

    Ты прав: они не думали. Не думали, что когда айпишник имеет более чем одно валидное строковое представление, это придется сопровождать вообще везде. Разработчик сделал поле ввода айпишника с предзаполненными точками, осталось лишь ввести четыре числа? [ ___ . ___ . ___ . ___ ] ? Дурак этот разработчик. Он что, не понимает, что пользователю гораздо удобнее вводить 16843009 вместо 1.1.1.1?

     
     
  • 4.105, Аноним (94), 15:50, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Бывают случаи, когда ip адрес должен быть записан в decimal без разделителей. Бывают и когда требуется heximal формат. Как пример, кодировка в ASN.1 для дальней космической связи. Октальная запись в таком случае оказывается избыточной. Деды с академическим подходом, то как раз молодцы, что предусмотрели многое. Проблема в смузи-поколении, что ограничены знаниями не дальше собственного носа.
     
  • 4.108, Аноним (94), 16:01, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Деды с академическим подходом, как раз думали о многом. В том числе о том, что может потребоваться десятичная запись без разделителей. И что может потребоваться шестнадцатиричная. И может быть выполнена оптимизация путем удаления назначимой части. Как пример, кодировка в ASN.1 для дальней космической связи. Где октальная запись избыточна.
    Проблема в поколении, которое ограничено знаниями, не уходящими дальше собственного носа.
     
     
  • 5.132, Akteon (?), 22:36, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И о том, что потомки могут один раз написать конвертер , чем переписывать поддержку всех форматов , во всех функциях, всех библиотек.
     
  • 5.146, onanim (?), 08:40, 02/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Деды с академическим подходом, как раз думали о многом. В том числе
    > о том, что может потребоваться десятичная запись без разделителей. И что
    > может потребоваться шестнадцатиричная. И может быть выполнена оптимизация путем удаления
    > назначимой части. Как пример, кодировка в ASN.1 для дальней космической связи.
    > Где октальная запись избыточна.
    > Проблема в поколении, которое ограничено знаниями, не уходящими дальше собственного носа.

    а нахрена в дальней космической связи IPv4? впихивание его туда как раз и показывает, что это разрабатывали диды-олимпиадники.

     
  • 4.142, arisu (ok), 03:33, 02/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    выше — отличный пример того, почему современный софт весь гуано.
     

  • 1.7, Аноним (7), 10:15, 01/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > загружалась примерно 30 млн раз в неделю

    Интересно, сколько денег пожертвовали Фёдору за его труд все эти прекрасные люди.

     
     
  • 2.8, Аноним (18), 10:18, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Они нехило законтрибьютили в его резюме своей статистикой скачиваний. Эйчары точно текут с таких чисел.
     
     
  • 3.10, Аноним (10), 10:22, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Да нифига. Тут где-то была новость про чувака-автора подобной либы с миллионами скачиваний, который полгода сидел и не мог работу найти.
     
     
  • 4.12, Аноним (18), 10:26, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чего-то он недоговаривает. Может он на собесы в шортах приходил? Иметь неплохое резюме -- лишь пол-дела. В любом случае, скинь ссыль.
     
     
  • 5.13, Аноним (10), 10:28, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    >Может он на собесы в шортах приходил?

    А что, ныне надо в юбке приходить, назвавшись трансформером?

     
     
  • 6.17, Аноним (17), 10:37, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Попробуй в сторону цветных слово публично скажи ты и год ничего не найдешь.
     
     
  • 7.148, Аноним (148), 20:58, 02/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот и я как-то прихожу как-то на собес в Apple, а там на ресепшене этот... Трансформатор, да ещё и в цвете. Стоит такой на каблуках, мускулами играет, серёжки аж потрясываются. Он меня спрашивает: вы кудааамммм? Я задумался куда, сдержал улыбку и говорю: я автор ядра linux, меня тут парнишка такой, русый онлайн собеседовал. Видимо в этот момент сработал regexp в голове у красотки, потому что следующее что я увидел - это струю из баллончика... А я так старался, писал для вас линукс
     
  • 6.29, нах. (?), 11:10, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Нынче толерантность - можешь хоть в шортах. Главное чтоб все знали что ты этот...трансформер, во.

     
  • 6.129, Вы забыли заполнить поле Name (?), 20:54, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >>Может он на собесы в шортах приходил?
    > А что, ныне надо в юбке приходить, назвавшись трансформером?

    Может он шотландец.

     
  • 4.119, Аноним (119), 16:37, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >с миллионами скачиваний

    Это же скриптота. Там любая библиотека из трёх строчек может собрать миллионы скачиваний. Это ничего не говорит о квалификации веб гребцы.

     
  • 3.15, Аноним (15), 10:35, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Эйчары не знают о такой статистики, пока ты сам явно не пропишешь в резюме. Впрочем, при первичном отборе резюме, всё зависит только от того, чешется левая пятка у эйчара или правая. Изредка смотрят смузихлёб или нет, вторых не берут.
     
  • 3.40, bdrbt (ok), 11:46, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Они нехило законтрибьютили в его резюме своей статистикой скачиваний. Эйчары точно текут
    > с таких чисел.

    В какой вселенной? В нашей вселенной большая часть не особо знает что такое гитхаб, а остальная: "я проверила, у него много проектов на гитхаб" - которые в реале какая-то каша из форков известных либ с парочкой коммитов в README.md и те без PR.

     
  • 3.118, Аноним (66), 16:35, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Они нехило законтрибьютили в его резюме своей статистикой скачиваний. Эйчары точно текут с таких чисел.

    Лол, с точностью до наоборот: эйчары видят безработного неудачника, батрачущего годами за бесплатно - и обходят его десятой дорогой, ибо понимают, что с ним что-то не так.

    Собственно, история того чела - красноречивое тому подтверждение.

     
  • 2.43, r1 (?), 11:57, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А потом 17 млн в неделю...
    т.е. 13 млн - она была нафиг не нужна? что за цифры такие?
     
     
  • 3.59, нах. (?), 12:38, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А потом 17 млн в неделю...
    > т.е. 13 млн - она была нафиг не нужна? что за цифры
    > такие?

    да банально - эти 13 миллионов сами были никому не нужны - это автоматические пайплайны, которые ойпаламалася из-за того что в них сами не знают зачем засунули npm audit.
    А ты думал, это 13 миллионов живых м@к@керов быстренько переписали код на другую (или, о б-жечки, самостоятельно написанную) версию этого лефтпада?!


     
  • 2.51, Аноним (50), 12:19, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Судя по первому комментарию Анонима(1), еще и облаяли, указав, что не ему решать и т.п.
     

  • 1.14, Аноним (14), 10:34, 01/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Суть уязвимость в использовании по умолчанию настройки libCurl (CURLOPT_SSL_VERIFYPEER=0), отключающей проверку сертификатов при загрузке внешних ресурсов по HTTPS, например, указанных в документе внешних изображений.

    Задолбали с этим HTTPS.

     
     
  • 2.45, Аноним (45), 12:08, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А браузерах точно так же, если трафик подписан сертификатом прокси, это не будет показано нигде. А вот курл при включённой этой опции выдаёт ошибку. Я отключал только потому, что значительно увеличивает время каждого запроса (или пользовался "впн", подглядывающими в трафик).
     

  • 1.21, Golangdev (?), 10:50, 01/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Ложные CVE

    А я говорил, что большинство "уязвимостей" - это шлак, который плодят "безопасники", лишь бы свои чудо-продукты продавать.

    "CVE" можно рассматривать всерьёз, если есть пруф, показывающий что и как мжно взломать / станять данные / заддосить и т. д.

    Всё помнят как несколько лет назад стада бегали из-за log4shell в одном Java-логгере ? Никто, блжад, не ужосужился проверить насколько реально что-то с этим исполнить на конкретном проекте...

     
     
  • 2.28, Аноним (28), 11:00, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ты прав в том что у  настоящих уязвимостей которые в использовании нет никаких све и о них никто кроме специальных людей не знает и не узнает. А све присваивают всякому шлаку потому что на них есть план или надо отчитаться перед начальством.
     

  • 1.22, Аноним (22), 10:52, 01/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Все правильно ему указали.

    То что он не валидирует входные данные в публичных методах апи - это баг.
    Или делал бы методы приватными недоступными для импорта, или делай валидацию

     
     
  • 2.30, нах. (?), 11:12, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, то что альтернативно-одаренный разработчик любую хрень из юзеринпут (потому что больше ей такой неоткуда браться - системные вызовы ТАК не работают) сует в эти методы - это безусловно не баг. Это фича.

    Разумеется библиотеки должны тратить миллионы циклов процессора на проверку того что ты должен был проверить еще при вводе. А то вдруг.

     
     
  • 3.48, Аноним (-), 12:13, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Разумеется Это js, детка Динамический язык, который не позволяет статически за... большой текст свёрнут, показать
     
     
  • 4.74, нах. (?), 13:18, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А он валидный. Согласно реэфсям.

    Отдельный привет как ты собираешься в своей статической типизации утрамбовать dotted decimal, partial dotted decimal и integer варианты в один тип. И как отличать потом ситуацию "юзер кульхаксор и всегда айпишники записывает integer'ами" от "у юзера слишком длинный хрен задевает клавиатуру"

     
     
  • 5.92, Аноним (-), 14:49, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Элементарно, Ватсон struct IPv4Addr u32 impl IPv4Addr pub fn try_from_s... большой текст свёрнут, показать
     
     
  • 6.117, нах. (?), 16:35, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Но забавна постановка вопроса: хранить ip-адрес в текстовом представлении...

    прости, ты их побитово ключом набираешь или как большие дяди - переключателями на пульте консоли?

    А то я-то вот... текстом.

    > Он решает проблемы _сохранения_результатов_проверок_, чтобы не надо было многократно проверять
    > одну и ту же строку на валидность.

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

    Ну и вот в том месте где он берется из операционной системы,а не левого источника - проверять особо и незачем. Во-первых непонятно что делать с результатом, во-вторых непонятно откуда возьмется.

    А хранить в интах не принято из-за inet_ntoa()/aton - внезапно (модные современные программисты, как обычно, нихрена не разбираются ведь в том что они программировать пришли). А iton не предусмотрели, потому что внезапно он никому не нужен и усложняет отладку. Адрес, знаешь ли, удобнее все же иметь в читаемой форме, а не конвертить на калькуляторе каждый раз.
    Кстати, забавно что они объявлены нимодно и deprecated, а то что вместо (правда, нигде не используется) ... опачки - НЕ ПОДДЕРЖИВАЕТ дурацкие rfcшные вредные и ненужные форматы.

     
     
  • 7.133, Аноним (-), 22:41, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А это не проблема разработчика библиотеки Это вот тот кто user-facing код пишет... большой текст свёрнут, показать
     
  • 6.125, Аноним (125), 19:20, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Локалхостный код какой-то. Мне что, надо ещё как-то заранее угадать, что айпишник v4, а не v6? Спасибо, мне тпкие библиотеки даром не натть и за деньги не нать. Вот фигня, которая должна быть айпи-адресом, ты её проверь, разбери, и верни мне в удобоваримом виде, либо кидай исключение. И смотри не вывались нигде за границы массивов, а то знаю я вас!
     
     
  • 7.126, нах. (?), 19:42, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Локалхостный код какой-то. Мне что, надо ещё как-то заранее угадать, что айпишник v4, а не v6?

    да, ты не поверишь - надо. Потому что это два разных AF_ и два разных набора вызовов.
    Нифига не взаимозаменяемых.

     
  • 7.134, Аноним (-), 22:43, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Локалхостный код какой-то. Мне что, надо ещё как-то заранее угадать, что айпишник v4, а не v6?

    Охх, тебя не интересует теория как это работает, тебе надо сразу готовый код? Тогда тебе сюда: std::net::SocketAddr https://doc.rust-lang.org/std/net/enum.SocketAddr.html

     
  • 4.106, Аноним (18), 15:56, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ни один язык не позволяет что-то статически запретить Всегда можно в unsafe при... большой текст свёрнут, показать
     
  • 3.109, Аноним (66), 16:05, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Разумеется библиотеки должны тратить миллионы циклов процессора на проверку того что ты должен был проверить еще при вводе.

    Нн поверишь, но сабж тоже тратит: все функции этой либы бросают исключение при невалидном IP. Все, кроме упомянутых isPublic() и isPrivate() - они написаны с ошибкой, и поэтому проверки не происходит.

     
  • 2.32, Аноним (32), 11:20, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Никто не утверждал, что это не баг.

    Утверждается, что это не уязвимость. Не всякий баг является уязвимостью.

     
  • 2.37, bdrbt (ok), 11:32, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Что правильно? Почитай новость внимательнее, там не юзеринпут юзается,а результат сисколов.
    Грубо говоря, допустим есть ф-я SomeSysCall() которая по спеке выдает 0 или 1. Допустим ты используешь ее в своем проекте. И тут появляется какой-то мутный тип, который начинает вещать: "А вдруг она вернет 3, а вдруг она вернет кубический корень из 42,а вдруг она вернет колбасный обрезок или банановую кожурку" и лепит раздутый CVE помеченный как "супер-мега-критический-мы-все-умрем". Другой дебил не особо вдаваясь в содержание этой простыни подтверждает ее и все, коллеги смотрят на тебя косо и думают:"эээ друк, так ты оказывается рукожоп".

    Так ситуация стала более понятной?

     
     
  • 3.83, Аноним (66), 14:04, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Что правильно? Почитай новость внимательнее, там не юзеринпут юзается,а результат сисколов

    Извини, но нет. Там нигде не юзается результат сисколов - это автор либы *предполагает*, что айпишник ты поучишь из этих самых сисколов.

    А если из другого места - то сорян: г*код из его либы будет возвращать разные результаты для одного и того же айпишника в разных представления.

    > "эээ друк, так ты оказывается рукожоп".

    Именно так по факту и оказалось.

     

  • 1.24, iCat (ok), 10:53, 01/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Честная конкуренция? Это только в теории...
    А на практике любая конкуренция - это процесс угнетения конкурента, а не саморазвития.
    Противоположность конкуренции - взаимопомощь.
     
     
  • 2.26, Аноним (18), 10:57, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Читай внимательнее. Зарепортивший -- не конкурент, а просто хотел по-быстрому срубить баблишка за выявленный CVE.
     
     
  • 3.57, n00by (ok), 12:37, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мог бы джва года писать такую библиотеку, а захотел по-быстрому. Вполне "конкурент".
     
  • 2.149, Аноним (148), 21:04, 02/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    На какой такой практике? В универе что ли?
     

  • 1.35, Ося Бендер (?), 11:27, 01/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Пора заводить черные (ок, сомнительные) списки для таких "репортеров", которые за баблишко людей отвлекают от работы. И как только такой спец нашел "уязвимость" сразу мордой его об черный список.
     
  • 1.47, Аноним (47), 12:13, 01/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Затрахать мозг разработчику -> стать мейнтейнером проекта -> внедрить троян. Что-то такое недавно было.
     
     
  • 2.60, Аноним (60), 12:39, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вообще-то у автора библиотеки классическая уязвимость: сделано допущение ошибки, в расчёте, что третья сторона никогда не вернёт неверные данные.

    Что в общем случае не так.

    И это глобальная причина у многих ленивых. Чтобы меньше напрягаться, быстрее написать. Но зато с проблемой под капотом. Обыкновенная халтура.

    Классика кодинга: проверяй данный, которые получаешь из другого кода, иначе пришлют эксплойт в конце концов.

     
     
  • 3.64, n00by (ok), 12:45, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А если будешь проверять, то подгрузят руткит по LD_PRELOAD в конце концов. А если соберёшь статически, то... ;)
     
  • 3.139, Ivan_83 (ok), 23:27, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Не нравится - пиши всё своё.
     
     
  • 4.150, Аноним (150), 21:16, 02/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то речь про другое.

    Пиши нормально или - отваливай. Что и сказали автору из новости, создав CVE.

     
     
  • 5.151, Ivan_83 (ok), 03:05, 03/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Там фикс одна строчка в реадми: подавайте на вход IP адреса в виде как они получаются на выходе системных функций.
     

  • 1.55, Аноним (60), 12:35, 01/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Насколько помню/понимаю, такой подходд вообще характерен для репов Ноды, и ещё раньше - для Пипа.

    Это именно одна из причин в критике JS и Питона. Питон выправляется понемногу, видны хотябы следы работы по чистке. Про JS совсем не в курсе...

     
     
  • 2.58, Аноним (58), 12:38, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Для любые репов даже для репы дистра.
     
     
  • 3.61, Аноним (60), 12:40, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Эти-то выделялись своей культурой. На фоне остальных.
     
     
  • 4.86, Аноним (86), 14:06, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ты за каждый васянодистр говоришь или за все?
     
     
  • 5.96, Аноним (60), 15:17, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Смысл у слова "остальные" однозначно отвечает на твой вопрос.
     
     
  • 6.121, Аноним (86), 17:07, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так там все плохо лучше нпм и пупи.
     
     
  • 7.124, Аноним (60), 17:24, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    NPM и PyPi выделялись своей культурой в худшую сторону. На фоне остальных.
     

  • 1.78, Вы забыли заполнить поле Name (?), 13:41, 01/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > но за 5 месяцев число загрузок снизилось до 17 млн в неделю

    То есть разработчика волнуют в первую очередь звездочки на гитхабе, а не безопасность? Ну это типичный представитель жс мирка. Ещё и напоследок ножкой топнул^W^W остановил разработку. Стыдно должно быть за такое инфантильное поведение.

     
  • 1.88, Аноним (88), 14:14, 01/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Это не Фёдору Индутному решать, как пользователям его либы эту либу использовать... большой текст свёрнут, показать
     
     
  • 2.137, Ivan_83 (ok), 23:22, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да болт с вами, не нравится - присылайте пулл регвесты с фиксами.
     
  • 2.143, arisu (ok), 03:40, 02/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    действительно. ишь, хам какой: работает бесплатно и не хочет при этом по щелчку пальцев подпрыгивать. он Обязан Же!
     

  • 1.116, Kuromi (ok), 16:33, 01/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Так он психанул и полностью снес свою разработку в стиле "Пошил вы все на"?
     
     
  • 2.120, нах. (?), 16:40, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Так он психанул и полностью снес свою разработку в стиле "Пошил вы
    > все на"?

    нет, просто на время заблочил возможность сыпать ненужные очень важные (нет) автогенеренные issues и верещать в чятике.


     
     
  • 3.128, Вы забыли заполнить поле Name (?), 20:50, 01/07/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > на время заблочил

    Если нельзя завести issue, то их нет (с) black smart guy

     

  • 1.138, Ivan_83 (ok), 23:25, 01/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Автор несколько уныл.

    Надо было или забить и добавить автофильтр на мыло чтобы само им отвечало "not a bug!" или открыть краудсорсинговую компанию по сбору 1м$ на исправление проблемы.

    А сколько там загрузок в месяц/год - не важно, пока это никак не конвертируется в доход.

     
  • 1.140, Вы забыли заполнить поле Name (?), 01:20, 02/07/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Почему вообще в nodejs в стандартной бибилиотеке нет этого функционала?
     
     
  • 2.144, arisu (ok), 03:43, 02/07/2024 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     

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



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

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