The OpenNET Project / Index page

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

Опубликованы результаты аудита безопасности кодовой базы LLVM

01.03.2024 23:30

Фонд OSTIF (Open Source Technology Improvement Fund), созданный с целью усиления защищённости открытых проектов, объявил о завершении независимого аудита кода проекта LLVM. Работа выполнена английской компанией Ada Logics. В ходе проведённой работы был восстановлен прерванный более года назад процесс тестирования в OSS-Fuzz. С 1.1 до 2.4 млн строк кода увеличен охват кодовой базы, вовлечённой в fuzzing-тестирование. Также был расширен используемый для fuzzing-тестирования инструментарий, а число применяемых для проверки fuzzing-движков увеличено с 12 до 15.

В итоге в кодовой базе LLVM удалось выявить 12 новых проблем, из которых 8 были вызваны ошибками, приводящими к повреждению памяти. 6 выявленных уязвимостей приводили к переполнению буфера, 2 к обращению к уже освобождённой памяти, 3 - к разыменованию нулевых уязазателей и 1 к чтению из области вне выделенного буфера.

  1. Главная ссылка к новости (https://ostif.org/llvm-audit-c...)
  2. OpenNews: Доступен набор компиляторов LLVM 17.0
  3. OpenNews: Google представил OSS-Fuzz, сервис для анализа безопасности открытого ПО
  4. OpenNews: Итоги пяти месяцев изучения безопасности СПО проектом OSS-Fuzz
  5. OpenNews: Google опубликовал результат аудита используемых пакетов на языке Rust
  6. OpenNews: Результаты второго аудита безопасности разработок проекта Tor
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/60707-llvm
Ключевые слова: llvm, audit
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (70) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (-), 23:52, 01/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > 12 новых проблем

    ... и ВСЕ проблемы с памятью!
    LLVM же на плюсах написан.
    А плюсы должны уметь в память, это же не сишка. Что у них пошло не так?

     
     
  • 2.7, Аноним (-), 00:14, 02/03/2024 Скрыто ботом-модератором     [к модератору]
  • +3 +/
     
     
  • 3.9, Аноним (9), 00:20, 02/03/2024 Скрыто ботом-модератором     [к модератору]
  • +6 +/
     
  • 3.31, n00by (ok), 08:12, 02/03/2024 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.15, Bottle (?), 00:51, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +10 +/
    На два миллиона строк это нереально мало. Вероятнее всего это ошибки работы с памятью, которые можно записать в логические.
     
  • 2.20, Аноним (20), 01:49, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Инструмент для обнаружения ошибок памяти обнаружил... ошибки памяти. Какая неожиданность!
     
  • 2.28, Аноним (-), 03:23, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +11 +/
    > LLVM же на плюсах написан.
    > А плюсы должны уметь в память, это же не сишка. Что у них пошло не так?

    Возможно я сделаю твой день, но вон там CVEхи с ошибками работы с памятью - даже на хрусте. Ну, вот, таки - смогли! Осилили. И ариан на безопасной аде - уронили. Ты недооцениваешь креативность двуногих, анон.

     
  • 2.33, n00by (ok), 08:27, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    2,4 миллиона строк на плюсах - это примерно как в 12 миллионах строках на Си было бы 12 ошибок.
     
  • 2.73, Аноним (-), 06:38, 04/03/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.77, adolfus (ok), 19:33, 05/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нет разницы, используется malloc() или его обертка в виде ключевого слова new. В обоих случаях имеем один и тот же указатель.
     
     
  • 3.78, n00by (ok), 12:25, 06/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Нет разницы, используется malloc() или его обертка в виде ключевого слова new.
    > В обоих случаях имеем один и тот же указатель.

    new может не вернуть указатель, а бросить std::bad_alloc.

     
     
  • 4.81, adolfus (ok), 17:00, 15/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >> Нет разницы, используется malloc() или его обертка в виде ключевого слова new.
    >> В обоих случаях имеем один и тот же указатель.
    > new может не вернуть указатель, а бросить std::bad_alloc.

    Может, но внутри в любом случае вызывается malloc() и в случае NULL вызывает либо библиотечный обработчик, либо пользовательский. malloc() нынче с субаллокатором внутри, поэтому надобность в new исчезла.


     

  • 1.10, Аноним (-), 00:21, 02/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +20 +/
    > 2.4 млн строк кода
    > 15 fuzzing-движков
    > 12 новых проблем, 8 были вызваны ошибками, приводящими к повреждению памяти

    Это просто офигенно. Одна ошибка памяти на 300к строк кода.
    Великолепный результат.
    Думаю другие проекты о таком и мечтать не могут.
    Вот оно превосходство современных плюсов (C++17) над Сишкой.

     
     
  • 2.43, Аноним (43), 14:26, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Каждому известно, что если нужна безопасность, нужно обратиться к Майкрософт.
     

  • 1.11, Bottle (?), 00:28, 02/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Удивительно мало уязвимостей. Вот что значит когда разработчики пишут на плюсах, а не чистых сях, обладают высокой квалификацией и используют статический анализ.
     
     
  • 2.19, Аноним (20), 01:31, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +9 +/
    И оказывается никакой Rust для этого не нужен.
     
     
  • 3.30, Аноним (30), 07:53, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Его пришлось продвигать: писатели на C не хотели переходить на C++. А теперь будут на Rust.
     
     
  • 4.34, n00by (ok), 08:42, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это Линус не хотел в одном проекте мешать идиомы RAII и goto error, но в угоду сообществу подвёл под это удивительную теоретическую базу. На чём теперь будут - это интересный вопрос. Удивительным образом Projected EOL всех последних LTS совпали с Dec, 2026. Что-то не припоминаю такого раньше.
     
     
  • 5.65, Аноним (65), 21:14, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Удивительным образом Projected EOL всех последних LTS совпали с Dec, 2026. Что-то не припоминаю такого раньше.

    Теория заговора :)

     
  • 4.36, Аноним (36), 09:37, 02/03/2024 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 3.42, Карлос Сношайтилис (ok), 13:15, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Оказывается аналитики опеннета так и не поняли, что раст нужен не для написания безопасного кода, а для неписания небезопасного.
    Понимаю, что двойное отрицание, для некоторых, сложная ментальная конструкция, но призываю её хотя бы попытаться понять.
    Безопасно можно писать на любом ЯП, это вроде очевидно, но Раст бьёт разработчика по рукам и вставляет палки в колеса в опасных местах, в отличии от с/с++, где компиляторам вообще по барабану что там разраб творит.
     
     
  • 4.69, Аноним (69), 05:37, 03/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https://www.openwall.com/lists/oss-security/2021/05/18/1
     
     
  • 5.76, Карлос Сношайтилис (ok), 18:47, 05/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Как это связано с тем что я написал? Или тебе нужен язык, который ещё и думать над логикой и архитектурой будет вместо тебя?
     

  • 1.12, kusb (?), 00:32, 02/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    А кстати почему компиляторы не пишут на скриптовых языках? Они не критичны к производительности на самом деле. А когда отлаживаете - можно просто отключить оптимизацию и всё равно собирать быстро.
     
     
  • 2.13, Аноним (9), 00:35, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    потому что продвинутые компиляторы используют всякие векторные инструкции и прочие специфичные для целевого процессора штуки?
     
     
  • 3.21, Аноним (65), 01:55, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Они эти штуки сами не обязаны использовать в процессе своей работы, они эти штуки генерят на выхлопе своей деятельности. Поэтому, это действительно могут делать и компиляторы, сами написанные на скриптовых. Тут только вопрос скорости компиляции.
     
  • 2.14, Bottle (?), 00:50, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Эммм, как раз наоборот. Если ты пытался собрать какой-нибудь крупный проект из исходников, то знаешь, это дело не на пять минут, а на полчаса и больше.
    Например, ядро Линукса является таким большим проектом. Или Либрофис. Или Хромиум.
     
  • 2.16, Аноним (16), 00:52, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Ага щщщщас, некритичны, как же. Такое может говорить только человек, понятия не имеющий об устройстве современного оптимизирующего компилятора и не имевший дела с крупными проектами.

    Пойди, собери Webkit/Blink из исходников. Потом расскажешь о впечатлениях.

     
  • 2.17, Аноним (9), 01:12, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Плюсовый компилятор на огромном проекте, когда разворачивает все шаблоны, неилюзорно так нагружает проц. И это компилятор написаный на C++. А так да, не критичны к производительности, ага.
     
     
  • 3.24, kusb (?), 02:50, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Ну да, но он запускается один раз. А при разработке можно не собирать с оптимизациями.
     
  • 2.27, Аноним (-), 03:20, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А кстати почему компиляторы не пишут на скриптовых языках?

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

     
     
  • 3.62, kusb (?), 20:57, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    То есть всё совсем сильно замедлится?
    Ну есть ещё языки с jit.
     
     
  • 4.67, Аноним (-), 04:10, 03/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    То-есть, скорость продвинутого оптимизера, особенно что-то типа LTO, ворочающего... большой текст свёрнут, показать
     
  • 2.32, n00by (ok), 08:22, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что применительно к компиляторам исторически сложился такой критерий - True Thing. Когда компилятор языка Икс написан на языке Икс - это значит, что язык Икс достаточно крут даже для написания компилятора. Из чего следуют совсем другие вопросы про компиляторы скриптовых языков, и некоторых нескриптовых.
     
     
  • 3.35, Sw00p aka Jerom (?), 09:24, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >про компиляторы скриптовых языков

    ого, есть такие ЯП "скриптовые"? это те в названиях которых есть слово "script"?

     
     
  • 4.41, Аноним (41), 12:14, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, ещё си, например. Это те, у которых можно указать экзешник в шебанге и он исполнит файл.
     
     
  • 5.44, Sw00p aka Jerom (?), 15:16, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    исполнит? интепретирует, то есть интерпретируемый ЯП.
     
     
  • 6.46, n00by (ok), 15:34, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    "Ch is a C/C++ interpreter and scripting language environment"
     
     
  • 7.48, Sw00p aka Jerom (?), 15:41, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    русский язык, есть еще литературный язык, стихотворный, жаргонный, мат-перемат.

    повторите свой комент на жаргонном языке.

     
  • 7.53, Sw00p aka Jerom (?), 16:58, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > "Ch is a C/C++ interpreter and scripting language environment"

    почему не manuscripting language (manuscriptum, от лат. manus — «рука» и scribo — «пишу»).

     
     
  • 8.61, n00by (ok), 20:46, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это к авторам интерпретатора вопрос В стандарте Си не помню требований к трансл... текст свёрнут, показать
     
  • 6.47, Аноним (41), 15:40, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Скрипты могут быть и компилируемыми, вот, к примеру, gdscript вполне скриптовый язык, которому нечего делать за границами среды (но и заменить его нельзя адекватно).

    Жава интерпретируется, но, в обычном виде -- это скомпилированный байткод для вм. А вот жаваскрипт в обычном виде интерпретируемая форма, которая преобразуется в скомпилированную и нативный код в процессе исполнения.

     
     
  • 7.49, Аноним (41), 15:43, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, жаву ещё можно скомпилировать (GraalVM) и она будет исполняться без виртуально машины. А если заставить жаву просто исполнять файл, то это скриптовый язык. И в качестве скриптового языка, она даже использовалась в играх ещё лет 20 назад (как питон или луа).
     
     
  • 8.52, Sw00p aka Jerom (?), 16:54, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    я могу назвать его алгоритмическим языком или процедурным языком может функцио... текст свёрнут, показать
     
     
  • 9.54, Аноним (41), 17:13, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нет Скрипты -- это то, что связывает части на нормальных яп и как правило тормо... текст свёрнут, показать
     
     
  • 10.55, Sw00p aka Jerom (?), 17:25, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Скрипт, как и алгоритм, программа, функция, сценарий, инструкция - это содержим... текст свёрнут, показать
     
     
  • 11.56, Аноним (41), 17:40, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Я привёл пример с полновесными играми для ПК Вся логика может быть либо на пи... большой текст свёрнут, показать
     
     
  • 12.57, Sw00p aka Jerom (?), 17:54, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    В этом то и проблема, вы рассматриваете ЯП с точки зрения содержимого и класси... текст свёрнут, показать
     
  • 12.58, Sw00p aka Jerom (?), 18:19, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    приведу небольшую аналогию с процессорами, если текущий линукс кернель не запуст... текст свёрнут, показать
     
     
  • 13.59, Аноним (41), 18:57, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    У брейнфака есть какие-либо перспективы стать неигрушечным через 10 лет, а сегод... текст свёрнут, показать
     
     
  • 14.63, Sw00p aka Jerom (?), 21:02, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ага, все во всем мире пользуются китайским языком, а остальные игрушки А что эт... текст свёрнут, показать
     
  • 13.68, Аноним (-), 04:16, 03/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Как угодно - но он свое в целом отлетал Редкие исключения только подтверждают п... большой текст свёрнут, показать
     
     
  • 14.71, Sw00p aka Jerom (?), 11:06, 03/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    вы считаете, что собрать паровый движитель - раз плюнуть игрушечное такое и... текст свёрнут, показать
     
     
  • 15.79, Аноним (79), 14:38, 07/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это миф Мы достоверно не знаем КАК ИМЕННО часть этого было сделано, но мы знаем... большой текст свёрнут, показать
     
     
  • 16.80, Sw00p aka Jerom (?), 21:13, 07/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    я такого не утверждал ... текст свёрнут, показать
     
  • 15.82, Аноним (-), 17:18, 15/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Думаю осилят, и довольно просто Тут надо не только знать как сделать , но и ч... большой текст свёрнут, показать
     
     
  • 16.83, Sw00p aka Jerom (?), 22:29, 15/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ок вот позиционную систему счисления придумали 2000 лет назад, говорите, что зна... текст свёрнут, показать
     
     
  • 17.84, Аноним (84), 07:59, 16/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    тогда уж 010 А вообще, представь что у тебя тумблеры где везде 000000000 до бес... текст свёрнут, показать
     
     
  • 18.85, Sw00p aka Jerom (?), 09:04, 16/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    вот ключевой момент, прибавляем добавляем новый разряд, после исчерпания стар... текст свёрнут, показать
     
  • 17.86, Аноним (-), 10:24, 16/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    возникла во второй половине третьего тысячелетия до н э в Древнем Египте еги... большой текст свёрнут, показать
     
     
  • 18.87, Sw00p aka Jerom (?), 20:34, 16/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    эт к слову сказано было написал вроде - в десятичной позиционной системе счислен... текст свёрнут, показать
     
  • 7.51, Sw00p aka Jerom (?), 15:50, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Жава интерпретируется

    там два этапа, первый компиляция в байт-код, а дальше интерпретация байт-кода (не исполнение).

     
  • 4.45, n00by (ok), 15:32, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    "Скриптовые языки" было в сообщении, на которое я отвечал. Скорее всего, автор имел ввиду интерпретируемые. От чего смысл моего ответа особо не меняется - современные интерпретаторы обычно предварительно компилируют исходный текст в байт-код.
     
     
  • 5.50, Sw00p aka Jerom (?), 15:45, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ну дык надо брать в таком случае в кавычки (как в данном коменте), ибо возникает вопрос
     
     
  • 6.60, n00by (ok), 20:40, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Мне надо было, что бы спрашивающий меня понял, при этом не забивать ему голову лишним. Для чего написаны первые два предложения.

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

    и вопрос последовал.)

     
     
  • 7.64, Sw00p aka Jerom (?), 21:11, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Для любителей поспорить

    а в чем спор то? вы хотите мне доказать существование "скриптовых" языков? Выше я пояснил почему не бывает таких языков. "Скрипт" от слова scribo — «пишу», то есть бывает "пишуший" и не "пишуший" языки?

     
     
  • 8.70, n00by (ok), 11:06, 03/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Я хочу, что бы ты наконец уяснил Когда ты задаёшь риторический вопрос, то мне о... текст свёрнут, показать
     
     
  • 9.72, Sw00p aka Jerom (?), 12:50, 03/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Вот именно назвали пьесу текст, содержимое , а не язык англ на котором написа... текст свёрнут, показать
     
  • 2.37, Анонус (?), 10:03, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    PyPy
     
  • 2.38, penetrator (?), 10:26, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ага точно, ты когда-нибудь билдил что-то большее чем хелоуворд?

    сишные проекты вообще медленно билдятся

    но даже какой-нибудь моно когда собирает ассембли не блещет скоростью

     
  • 2.39, Аноним (39), 10:41, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Они не критичны к производительности на самом деле.

    Для хоум юзера — некритичны. А вот на работе, где сборочные фермы для CI стоят от нескольких сотен тысяч баксов — очень даже критичны.

     

  • 1.22, Аноним (20), 02:04, 02/03/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Куда больший интерес сейчас представляет AI-Powered Fuzzing. Натравил модель на свой код, вуаля - все безопастно аж дальше некуда при почти нулевых усилиях. Вот оно, будущее безопастности.
     
     
  • 2.25, Аноним (25), 03:14, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Опять "волшебные" таблетки под новой упаковкой продают.
    ИИ не магия, работать за вас не будет, по эффективности проигрывает классическим алгоритмам, а фьюзинг итак время и ресурсоъемкий.
     
  • 2.26, Аноним (-), 03:19, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Куда больший интерес сейчас представляет AI-Powered Fuzzing. Натравил модель на свой код,
    > вуаля - все безопастно аж дальше некуда при почти нулевых усилиях.
    > Вот оно, будущее безопастности.

    Вон там в соседней новости - будущее безопасности. Когда ты скачал модель, запустил, она тебя раз@#$ла нафиг - и байбай.

     
  • 2.29, Alladin2 (?), 05:16, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Доверять ИИ безопасность кода?

    Это тому самому ИИ который часто любит выдумывать и глючить..

     
  • 2.40, Аноним (-), 11:16, 02/03/2024 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Идея на самом деле неплохая.
    Просто скармливаете нейронке все CVE, найденные в ядре, за последние 10-20 лет и пусть ищет "похожие конструкции".
    А там уже человек глазенками просмативает.
     
     
  • 3.74, bOOster (ok), 14:15, 05/03/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И лжеИИ в определенном моменте зацикливается.
     

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



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

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