LINUX.ORG.RU

libarchive 3.7.5

 , , , ,


0

2

14 сентября состоялся корректирующий выпуск 3.7.5 библиотеки libarchive, с устранением многих ошибок и уязвимостей. Библиотека и сопутствующие утилиты написаны на языке C и распространяются по лицензии New BSD.

Исправления уязвимостей:

  • многочисленные уязвимости, выявленные с помощью Microsoft SAST;
  • cpio: возможное (fuzz-тест) переполнение знаковых 64-битных промежуточных значений gid/uid/size/ino при разборе архивов AFIO (разновидность CPIO);
  • lzop: предотвращение целочисленного переполнения;
  • rar4: предотвращение копирования слишком большого значения в int в функции copy_from_lzss_window_to_unp (CVE-2024-20696);
  • rar4: удалённое выполнение кода (CVE-2024-26256, CVS-2024-26256);
  • rar4: OOB в фильтрах audio и delta;
  • rar4: выход за пределы диапазона при работе с большими файлами;
  • rar4: в фильтр rgb добавлена проверка на выход за пределы диапазона;
  • rar4: OOB при чтении архива с юникодными именами файлов внутри;
  • rar5: теперь кэш data ready очищается при перераспределении памяти буфера;
  • rpm: корректное вычисление размера заголовков;
  • unzip: выход за границы и неопределённое содержимое памяти, если при распаковке (при выборе [r]ename) в имени файла есть EOF;
  • выход за пределы в функции mktemp;
  • uu: OOB при обработке строк более 34816 байтов.

Также исправлены другие ошибки чтения архивов в форматах 7zip, ar, lha, shar, rar5 и xar. Внесены многочисленные исправления для ОС Windows.

>>> Подробности

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от iron

Уже https://github.com/libarchive/libarchive/commit/eb7939b24a681a04648a59cdebd386b1e9dc9237.patch

This patch fixes an out-of-bound error in rar e8 filter.

-  if (length > PROGRAM_WORK_SIZE || length < 4)
+  if (length > PROGRAM_WORK_SIZE || length <= 4)
    return 0;

Может уже доверить проверку границ массива абстракциям, а не программистам? Ну ведь не справляются сишники с этим.

ox55ff ★★★★★
()
Ответ на: комментарий от ox55ff

Может уже доверить проверку границ массива абстракциям

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

iron ★★★★★
()
Ответ на: комментарий от Xintrea

А вообще есть возможность запускать ядро под валгриндом и санитайзерами?

Под валгриндом точно нет. А с санитайзером – хз.

iron ★★★★★
()
Последнее исправление: iron (всего исправлений: 1)
Ответ на: комментарий от Xintrea

Так чего ты это требуешь от авторов ядра?

Не нужно фантазировать. Про санитайзеры и прочее я писал в ответ на прост про libarchive.

iron ★★★★★
()

надеюсь они научились делать escape строкам в параметрах?

anonymous2 ★★★★★
()
Ответ на: комментарий от dataman

особенно libarchive радует циклической зависимостью в cmake.
Когда сначала приходится собирать cmake без libarchive, чтобы потом собрать libarchive и cmake с ним...

mittorn ★★★★★
()
Ответ на: комментарий от a1ba

А ещё вроде как при сборке clang можно даже ubsan и msan использовать

mittorn ★★★★★
()
Ответ на: комментарий от iron

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

Xintrea ★★★★★
()
Ответ на: комментарий от ox55ff

Может уже доверить проверку границ массива абстракциям, а не программистам?

Мысль хорошая, но ни у кого пока не получилось: надо сразу всю ось так писать, видимо

pihter ★★★★★
()
Ответ на: комментарий от ox55ff
book$ patch -p1 < eb7939b24a681a04648a59cdebd386b1e9dc9237.patch
patching file libarchive/archive_read_support_format_rar.c
Reversed (or previously applied) patch detected!  Assume -R? [n]
sunjob ★★★★
()
Ответ на: комментарий от ox55ff

решил посмотреть в процессе пересборки пакета

sunjob ★★★★
()
Ответ на: комментарий от ox55ff

Там работа не с массивом, а с буфером памяти с произвольными смещениями и чтением/записью блоками. Наворачивание вокруг такого кода твоих абстракций помножит производительность архиватора на 0.

Logopeft ★★
()
Ответ на: комментарий от Logopeft

не с массивом, а с буфером памяти

Это одно и то же.

помножит производительность архиватора на 0

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

ox55ff ★★★★★
()
Ответ на: комментарий от ox55ff

Это одно и то же.

Нет, массив это упорядоченный набор элементов определённого типа, к которым доступ осуществляется по индексу.

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

То, что в С с массивом можно работать как с буфером, и наоборот к указателю приставить квадратные скобочки и вписать индекс, не означает что это одно и то же.

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

Logopeft ★★
()
Ответ на: комментарий от iron

А вообще есть возможность запускать ядро под валгриндом и санитайзерами?

Под валгриндом точно нет.

А какой-нибудь «user mode linux»?

question4 ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.