Защищены ли пакеты ubuntu (deb-файлы) только md5sum?

13

Вводная информация к вопросу ниже ###

(таким образом, вопрос более удобен для большего количества людей)
Внутри пакета в стиле Ubuntu / debian (файл * .deb) есть файл с именем, /DEBIAN/md5sumsкоторый имеет содержимое этой формы:

212ee8d0856605eb4546c3cff6aa6d35 usr / bin / file1
4131b66dc3913fcbf795159df912809f path / to / file2
8c21de23b7c25c9d1a093607fc27656a путь / к / файлу3
c6d010a475366e0644f3bf77d7f922fd путь / к / месту / из / file4

Как я полагаю, этот файл будет использоваться для проверки того, что файлы, поставляемые с пакетом, не были как-то повреждены. Поскольку файл называется `/ DEBIAN / md5sums", я предполагаю, что шестнадцатеричный номер перед путем + имя файла является хешем алгоритма дайджеста сообщений MD5 для файлов пакета.

Теперь все, кто интересуется, знают, что MD5 Hash уже давно сломан. Поэтому вполне возможно изменить содержимое файла в пакете (например, злонамеренно) и при этом иметь файл, имеющий тот же хэш-код MD5 (см., Например, подтверждение концепции «Предсказание победителя ...» ).

Вопрос

Принимая во внимание информацию выше, я хочу знать следующее:

** Предполагается, что я устанавливаю пакет в моей системе Ubuntu. Это DEBIAN/md5sumsединственный способ убедиться, что данные не были подделаны? **

Отвечая на вопрос, я думаю, что это может помочь выяснить следующее:

  • Являются ли пакеты deb в целом хэшированными (для которых созданы значения Hashvalues), так что есть еще один способ обеспечить безопасность полученных файлов: «безопасно» / «нетранспортировано»
  • Если есть другие способы, чем DEBIAN/md5sumsфайл для обеспечения целостности, какой файл в любом случае включен в пакеты * .deb?
  • Использует ли Ubuntu хеши для репозитория / системы пакетов, которые «менее повреждены», чем SHA-1 и MD5?

чего, к сожалению, я тоже не знаю.

Любой ответ, который может пролить свет на вопрос (или даже только вопрос), очень приветствуется

Обновить

(1) https://help.ubuntu.com/community/Repositories/Ubuntu#Authentication_Tab, похоже, указывает на то, что (как я и надеялся) существует какой-то открытый / закрытый ключ gpg (для обеспечения безопасности репозиториев и систем пакетов) от атак. Информация в связанном местоположении не очень много, хотя. Это почти ничего не говорит о аспекте безопасности системы Package. В любом случае, я предполагаю, что ссылка уже указывает, что ответом на вопрос будет «НЕТ - по крайней мере, пакеты deb из репозитория - также защищены ....». Надеюсь, у кого-то есть идеи, чтобы использовать здесь для ответа.

(2) Этот вопрос, кажется, также касается темы «безопасности» в системе пакетов Ubuntu. Поэтому я просто добавляю его сюда, чтобы он был рекламным, если кто-то пытается выяснить вопрос: почему предложенные исправления BADSIG (в обновлении apt-get) безопасны?

humanityANDpeace
источник
1
debian.org/doc/debian-policy/… указывает на поддержку контрольных сумм для файлов SHA-1 и SHA256, однако я не знаю, что такое aptполитика контрольных сумм.
хронит
1
@chronitis спасибо за ссылку там. Действительно, хэши SHA- * упоминаются там, и мне все еще нужно выяснить, как они появляются в пакетах (которые я еще не видел) или в системе пакетов. Знаете больше? Ну, указание уже хороший шаг
человечество

Ответы:

21

Ubuntu публикует манифест, подписанный ключом RSA. В манифесте перечислены отдельные Packagesиндексные файлы, каждый из которых содержит хэши MD5, SHA-1 и SHA-256. В каждом Packagesфайле перечислены отдельные .debфайлы с хэшами MD5, SHA-1 и SHA-256.

Для проверки apt использует лучший хеш, который он поддерживает, и публикуется архивом, из которого он загружает. В случае архива Ubuntu это SHA-256.

Таким образом, вся цепочка установки пакетов в вашей системе Ubuntu защищена RSA и SHA-256.

Защита MD5, которая существует в dpkg, действительно полезна только для случайного повреждения и не нужна для защиты пути установки.

Возможно, вас заинтересует debsumsпакет, но поскольку он использует MD5, он также полезен только для проверки на случайное повреждение.

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

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

Роби Басак
источник
1
Я получил более четкое понимание. Откуда вы взяли всю эту информацию, которую я так трудно найти? У вас есть какие-то ссылки / ссылки, которые вы использовали? Также я благодарен за упоминание упомянутой вами «опасности понижения», так что я пока не понимаю, насколько точно это может быть использовано. Большой! спасибо
человечествоANDpeace
Я не верю, что формат репозитория apt правильно указан или задокументирован. Это плохо, но так оно и есть. Лучшая (и, насколько мне известно, только) истинная документация является источником. Я знаю детали, потому что я работал в источнике. С другой стороны, формат dpkg очень хорошо указан в политике Debian. Он описывает, что происходит после того, как пакеты попадают в вашу систему, а не то, как они туда попадают. Последняя часть сделана apt.
Роби Басак
Риск понижения: это в стороне и не имеет прямого отношения к вашему первоначальному вопросу. Если эксплойт X обнаружен в версии A, вы получаете обновление для системы безопасности до версии B, в которой уязвимость устранена. Если злоумышленник может использовать X в версии A, то вы в безопасности, поскольку вы повысили свой уровень до B. Но если злоумышленник также может понизить вас до A, то вы снова уязвимы. Вы не заметите этого даже в том случае, если все ваши безопасные хеши соответствуют установленным вами пакетам, поскольку в вашей базе данных пакетов будет указано, что у вас установлен А, а не Б.
Роби Басак
2
@RobieBasak «Я не верю, что формат репозитория apt правильно указан или задокументирован в любом месте». Очевидно, что это не так. Вы просто должны это искать. Debian Wiki: RepositoryFormat
gertvdijk
6

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

Да, md5 был взломан криптологически, но это не значит, что это плохой алгоритм хеширования общего назначения. Изменить файл таким образом, чтобы он имел тот же хеш, невероятно сложно, и сделать это с определенным злонамеренным изменением почти невозможно. Посмотрев на пример, на который вы ссылаетесь, ( Predicting The Winner ) вы увидите следующее:

«Документы были сначала тщательно подготовлены как действительные документы PDF, со скрытым включенным объектом изображения, содержащим достаточное количество случайных битов. Затем, в соответствии со структурой ромба, показанной выше, были вычислены одиннадцать столкновений с выбранным префиксом, и помещены внутри скрытого отображать объекты точно в нужных местах. Таким образом, двенадцать документов были превращены в мульти-коллизию MD5 ».

Что было сделано, так это заполнить файлы случайными данными, чтобы хэши совпали. Эта технология далеко не способна добавлять определенный вредоносный код в файл и выстраивать хеш-коды, не нарушая его или не делая очевидным, что файл был изменен (я не знаю, если apt делает, но многие хэши файлов сопровождается размерами файлов, что увеличивает сложность необнаружимого столкновения хеша).

jackweirdy
источник
3
Спасибо за твой ответ. Я думаю, что это хороший ответ, в том смысле, что он дает больше света всему фону :) К сожалению, «Stack ... Ask Ubuntu» иногда трудно сказать «строго ответить только на вопрос», и поэтому здорово, что вы набрались смелости уточнить тему.
человечествоANDpeace
Подготовленные файлы PDf содержат случайные данные и занимают всего 104 КБ при всех этих усилиях. Почему вы говорите, что это невозможно тогда? В пакетах deb должно быть множество файлов размером> 200 КБ, где это возможно. Я чувствую себя не так безопасно, увидев доказательство концепции, которое поразило и шокировало меня
человечествоANDpeace
В допустимых файлах есть много мест, где незначительные изменения не выглядят странными, например, небольшие различия в текстовых файлах. Вам нужно всего лишь найти около 128 из этих мест, чтобы иметь достаточно места для создания вредоносного файла, который как выглядит законным, так и соответствует желаемой цели MD5. Я не уверен, что эта конкретная атака может быть применена к этой ситуации, хотя.
Роби Басак
@RobieBasak, вы неправильно поняли атаку. Вы не можете просто изменить 128 байтов в файле и сохранить md5sum. Вы должны вставить часть двух наборов случайных данных в две копии файла, и они будут иметь ту же сумму md5, что и одна другая, несмотря на то, что две части «случайных» данных различны.
psusi
1

MD5 не был "сломан". Они нашли способ аккуратно составить оригинальное сообщение и модифицированное сообщение с таким же хешем. Невозможно взять исходное сообщение, специально не созданное для фальсификации (правильный файл), и изменить его таким образом, чтобы сохранить его md5sum.

psusi
источник
Ok. Но какой будет хороший способ сослаться на текущее состояние безопасности MD5 сейчас, если не «сломан»? Я понимаю, что вы говорите, и я благодарю вас за это. Мне все еще интересно, как оценить текущую безопасность по MD5 и т. Д.
humanityANDpeace
@humanityANDpeace, "просто отлично".
psusi
Мне нравится оптимистичное отношение. Я все еще был поражен доказательством концепции в конце концов. Благодарность!
человечествоANDpeace
1
«Эксперты по криптографии считают MD5 сломанным. Поэтому его следует считать сломанным». мир не так работает @RobieBasak Как криптоэнтузиаст (не могу назвать себя «экспертом», но мне пришлось копаться в этом несколько лет назад), я бы сам не сказал, что MD5 сломан. Просто есть интересный случай, который стоит проверить, но он кажется теоретическим. Но это не сломает упаковку Ubuntu;) Вернуться к 0 psusi;)
Rinzwind
1
@ jackweirdy, на самом деле, есть, и именно поэтому они этого не сделали. Их метод основан на обоих наборах данных, имеющих очень специфические свойства. Это очень похоже на публичную пару ключей. Вы можете сгенерировать пару ключей, которые соответствуют друг другу, но, учитывая только один, вы не можете выяснить другой.
Псуси