LINUX.ORG.RU
ФорумTalks

Hash-DoS уязвимость в btrfs

 ,


1

4

http://crypto.junod.info/2012/12/13/hash-dos-and-btrfs/

Для Ъ - умелец создал скрипт, который создает в одной директории небольшое кол-во файлов со специальными именами, на удаление которых тратится дохрена процессорного времени (эксперимент прервали после 220 минут, судя по всему система вошла в бесконечный цикл).

Причина - использование слабого алгоритма хеширования CRC32 и использование структур данных с высокой сложностью в наихудшем случае (worst-case complexity, как будет по-русски нормально?)

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

ЗЫ - проверил у себя, не воспроизводится.

★★★★★

Последнее исправление: provaton (всего исправлений: 1)

готово к продакшену.

Deleted
()
Ответ на: комментарий от post-factum

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

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

PaulCarroty, segfault

applying the idea on PHP, Python, Java, Ruby, etc. and more recently by Aumasson, Bernstein and Bosslet

На ней многие из энтерпрайза подорвались, так что готово :)

frozenix ★★★
()
Ответ на: комментарий от post-factum

Сенсация!

В ext4 обнаружена DoS уязвимость в пространстве имён. После создания 800 тыс. файлов на 13-гиговой ФС, там больше нельзя создать файлы. В настоящее время доступно временное решение проблемы для суперпользователя, однако для обычных пользователей проблема сохраняется.

И что теперь, ext4 тоже фигня? У всех есть недостатки.

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

Для ext4 и ограниченности inode есть quotas. Они включены на каждой многоюзерской претендующей на продакшн машине, если у сисадмина есть хотя бы половина мозга. А что там в btrfs, или оно готово лишь для планшетников?

x3al ★★★★★
()
Ответ на: комментарий от post-factum

Ну изначально это было так, ну а вдруг сейчас допилили? Конечно для плохо спроектированной ФС это маловероятно, но всё же.

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

И снова - толпа хомячков Шишкина набежала :D

Wikipedia

Аргументация ad hominem относится к так называемым логическим уловкам — психологически действенным, но логически некорректным способам обоснования тезиса. С логической точки зрения, она имеет следующую форму:

  1. Человек A делает утверждение X.
  2. О человеке А известно нечто неприемлемое.
  3. Следовательно, утверждение X ложно.

Логическая некорректность данной аргументации очевидна: тот факт, что лицо, выдвинувшее аргумент, характеризуется по каким-то признакам отрицательно, никак не влияет на истинность или ложность его аргументации.

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

Годная отмазка, но это всего лишь отмазка, не отменяющая того простого факта, что хомячки Шишкина бездумно повторяют его утверждения, сделанные несколько лет назад :D

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

Годная отмазка, но это всего лишь отмазка

Это не отмазка, а указание на некорректность аргументации.

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

Что, в свою очередь, не отменяет истинности этих утверждений.

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

сделанные несколько лет назад

1. Вернуть машину времени на место.
2. Перечислить, что же фундаментально изменилось в btrfs за это время (кроме появления подобия fsck).

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

Что, в свою очередь, не отменяет истинности этих утверждений.

А что, кстати говоря, Шишкин имел против btrfs кроме кривой упаковки direct item'ов?

i-rinat ★★★★★
()
Ответ на: комментарий от Kindly_Cat

Ещё бы у тебя нормальные аргументы были...

А ты считаешь то что написано в топике не аргумент?

Ygor ★★★★★
()
Ответ на: комментарий от i-rinat

А что, кстати говоря, Шишкин имел против btrfs кроме кривой упаковки direct item'ов?

кривой дизайн? Мутная политика относительно снапшотов?

Ygor ★★★★★
()
Ответ на: комментарий от i-rinat

И что теперь, ext4 тоже фигня? У всех есть недостатки.

Все линуксовые фс такие вот недоделанные.

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

кривой дизайн? Мутная политика относительно снапшотов?

Дизайн вроде ничего так. Но вот реализация мутная какая-то, да. Но все ФС со сжатием мутные. (Кроме одноразовых, типа squashfs).

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

Я же просил кроме кривой упаковки direct item'ов. А ты мне это и суёшь.

Там же дофига всего другого, не?

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

Там же дофига всего другого, не?

Нет, всё об одном: криво пакуются direct item'ы. Просто в красках. Ты же читал, да? :)

i-rinat ★★★★★
()
Ответ на: комментарий от Axon

max_inline=256 и все файлы больше 256 байт будут в indirect item'ах. Ну или как там это называется в btrfs. В отдельных блоках, в общем.

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

Нет, всё об одном: криво пакуются direct item'ы.

Вообще-то там сказано, что B-дерево вообще не приспособлено для записей переменной длины. Опция монтирования делает эти записи фиксированными?

И еще «the balancing algorithms have been modified in insane manner». Это исправлено?

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)

worst-case complexity

Череда совпадений наихудших случаев.
Плохой из меня переводчик, да?

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

Плохой из меня переводчик, да?

Да. Обычно переводят калькой «сложность в худшем случае».

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

что B-дерево вообще не приспособлено для записей переменной длины

А в reiserfs они фиксированной длины, что ли? Почти все разные и ничего, как-то влезают.

Опция монтирования делает эти записи фиксированными?

опция говорит: не надо паковать в лист файлы большого размера. Это уменьшает число листов, решая две проблемы. Первую — становится меньше метаданных. И вторую, следствие первой: меньше мусора от COW этих метаданных.

i-rinat ★★★★★
()
Ответ на: комментарий от CYB3R

Череда совпадений наихудших случаев. Плохой из меня переводчик, да?

Нет, не то. Череды тут нету, просто наихудший случай. Complexity - это сложность алгоритма, если я правильно помню терминологию. Обычно записывается в асимптотической нотации O(1), O(n), O(log(n)), и т. д.

http://en.wikipedia.org/wiki/Worst-case_complexity

http://en.wikipedia.org/wiki/Time_complexity

Интервик нету, в словарях лингвовских тоже ничего.

provaton ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

что B-дерево вообще не приспособлено для записей переменной длины

А в reiserfs

reiserfs здесь не причем.

опция говорит: не надо паковать в лист файлы большого размера. Это уменьшает число листов

Я спрашивал, делает ли опция размер записи фиксированным.

Т.е. пока ты не ответил ни на один вопрос.

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

reiserfs здесь не причем.

Причём, даже очень. B+-дерево в обоих случаях. Причём «модификация, подходящая для COW», то есть без ссылки на соседний лист. А ещё reiserfs — пример работоспособной реализации B+-дерева с записями переменного размера.

делает ли опция размер записи фиксированным.

Нет.

Т.е. пока ты не ответил ни на один вопрос.

У тебя вопросы типа: «Вы всё ещё бьёте свою жену?» Они некорректны в своём требовании категоричных ответов и неверных предпосылках.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от tailgunner

И еще «the balancing algorithms have been modified in insane manner». Это исправлено?

Это невозможно исправить, ведь это значит: «алгоритмы балансировки бессистемно менялись». Как можно исправить события прошлого?

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

делает ли опция размер записи фиксированным.

Нет.

Т.е. одна из претензий Шишкина не исправлена.

У тебя вопросы типа: «Вы всё ещё бьёте свою жену?» Они некорректны в своём требовании категоричных ответов и неверных предпосылках.

Это то, что отметил Шишкин. Если ты считаешь, что его претензии необоснованы - так и скажи, я напомнил список. Но не своди претензии к «кривой паковке direct item'ов».

tailgunner ★★★★★
()
Ответ на: комментарий от i-rinat

«the balancing algorithms have been modified in insane manner». Это исправлено?

Это невозможно исправить, ведь это значит: «алгоритмы балансировки бессистемно менялись»

Это значит «алгоритмы балансировки изменены совершенно безумно». Если их привели к разумным (описанным в упомянутой статье), значит, исправлено.

tailgunner ★★★★★
()

Насколько высока вероятность того, что подобная последовательность файлов «сама» сформируется в процессе работы?

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

его претензии необоснованы - так и скажи

Его претензии необоснованны.

Но не своди претензии

Копаюсь в реализации reiserfs и вижу всё то, что порицает Шишкин.

i-rinat ★★★★★
()
Ответ на: комментарий от alman

Насколько высока вероятность того, что подобная последовательность файлов «сама» сформируется в процессе работы?

Ничтожно мала. Но злоумышленник может такую последовательность сгенерить за доли секунды.

provaton ★★★★★
() автор топика

- Я передал им Ваш скрипт, мистер Райзер.
- И что они?
- Схватились за головы и пошли пить свои лекарства. Когда Вы выйдете из тюрьмы, Вы ведь продолжите работу над ФС, так?
- Да ну ее. Это так, просто показать что они идиоты, Джейк. Я нашел себя в физике, и не особенно хочу туда возвращаться.
Ганс взял с полки очередную книжку, чистый лист, откинулся на койке и вновь углубился в чтение, поминутно выписывая какие-то формулы...

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

В отличие от btrfs, reiser4 мертва и не опасна.

А, вон в чём дело. Ненависть.

Кстати, а с чего Шишкин взял, что в btrfs B-tree? Я даже ещё раз глянул в код. Там B+.

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

В отличие от btrfs, reiser4 мертва и не опасна.

А, вон в чём дело. Ненависть.

WAT. Я в жизни не пользовался ни одной версией reiser, и пока не собираюсь пользоваться btrfs. У меня нет никаких эмоций по отношению к ним и их создателям.

Хотя нет, вру... Мейсону я очень благодарен за mq.

Кстати, а с чего Шишкин взял, что в btrfs B-tree? Я даже ещё раз глянул в код. Там B+.

«The term B-tree may refer to a specific design or it may refer to a general class of designs». Судя по ссылке на Ohad Rodeh, Шишкин понимает, о чем говорит. И все остальные его понимают.

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

Судя по ссылке на Ohad Rodeh, Шишкин понимает, о чем говорит.

Он приводит аргументацию для другого типа деревьев. В B-дереве я вообще не представляю, как хранить записи переменного размера. В B+-дереве — это вполне очевидно: есть листья, туда и пишем. Если получается разрезать — режем и пишем в следующий лист. Они все на одном уровне. Идея совершенно прозрачна и даже я (а я не программист), вполне ясно вижу, как с этим работать.

А Шишкин какую-то мутную аргументацию использует. И много экспрессивных выражений. Сказал вроде много, только мутно. Смотрю в reiserfs и btrfs — вижу сходство, те же идеи. (В reiser4 лень смотреть). А ведь reiser4 развивает идеи reiserfs, а не базируется на совершенно новых. Очевидно, что Шишкин не считает ФС, которую всё ещё поддерживает, дефектной. Но эй, дизайны структур данных схожи чрезвычайно. Если btrfs дефективная, то и reiser4 дефективная и reiserfs дефективная.

Тут, конечно, возможен вариант, что он действительно считает reiser4 дефективной, и возится с ней только в силу врождённого мазохизма. Однако я склонен считать, что это ревность. У Мейсона есть возможность пилить эти идеи, а у Шишкина нет. Особенно обидно, когда твою идею отбрасывают и заменяют своей. Особенно если твоя была лучше (а своя всегда лучше :) ). Вот он и нашёл к чему прицепиться и пошёл в разнос.

Хватит уже повторять слова Шишкина, пора иметь своё мнение. И защищать его самому, а не прикрываться хлёсткими фразами.

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

Смотрю в reiserfs и btrfs — вижу сходство, те же идеи.

Ок.

А ведь reiser4 развивает идеи reiserfs

facepalm.tar.xz (2TB)

x3al ★★★★★
()
Ответ на: комментарий от i-rinat

B-дереве я вообще не представляю, как хранить записи переменного размера. В B+-дереве — это вполне очевидно

..и это обнуляет гарантирванные свойства B+-дерева.

Шишкин какую-то мутную аргументацию использует.

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

Если btrfs дефективная, то и reiser4 дефективная и reiserfs дефективная.

Это не аргумент вообще.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.