The OpenNET Project / Index page

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



"Коллизии в сокращённых идентификаторах коммитов в ядре Linux"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Коллизии в сокращённых идентификаторах коммитов в ядре Linux"  +/
Сообщение от opennews (??), 31-Дек-24, 12:08 
Кейс Кук (Kees Cook), бывший главный системный администратор kernel.org и лидер Ubuntu Security Team, продемонстрировал возможность создания коммита, сокращённый идентификатор которого совпадает с коммитом, ранее добавленным в ядро Linux. Эксперимент проведён в качестве подтверждения целесообразности перехода на 16-символьные сокращённые идентификаторы коммитов в ядре Linux, ранее обсуждавшегося в списке рассылки разработчиков ядра, но не одобренного Линусом Торвальдсом...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=62495

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 31-Дек-24, 12:08   –6 +/
А как этим можно злоупотребить? Я пример понял но вот реальный обход нет. Да и Торвальдс и так все сам читает.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #47

10. Сообщение от Аноним (10), 31-Дек-24, 13:17   +/
> но до отправки патча было выявлено утилитой checkpatch.

Выглядит как майнинг коллизий.

Ответить | Правка | Наверх | Cообщить модератору

11. Сообщение от Аноним (11), 31-Дек-24, 13:19    Скрыто ботом-модератором–5 +/
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #13, #16

12. Сообщение от Илья (??), 31-Дек-24, 13:19   –3 +/
Есть люди, которые никогда не поймут отличие гуида от хеша, и которые на серьёзных щах будут утверждать что нужно просто использовать хорошую хеш функцию

Это не лечится

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #52

13. Сообщение от Илья (??), 31-Дек-24, 13:20   –5 +/
> и оно никак не является уникальным, и даже не должно быть уникальным

Не все это понимают

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11

15. Сообщение от lizard (??), 31-Дек-24, 13:35   +6 +/
Пользуйтесь SVN: 1,2,... 100000 цифирьки увеличиваются и никогда никаких коллизий.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #17, #48, #78

16. Сообщение от Аноним (16), 31-Дек-24, 13:38   –2 +/
Так ведь экономическое и управленческое образование не полностью показывает, чем кончается попытка обмануть математику с физикой.

Показалось инвестору, что Индия ИТ за миску супа даст тот же результат. Но - это не так. Просто заметно не сразу.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11

17. Сообщение от Аноним (16), 31-Дек-24, 13:40   +1 +/
Проблема в подмене смысла этих цифр с буквами. Глупость - она такая: хоть алфавит смени, но не помогает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

25. Сообщение от ijuij (?), 31-Дек-24, 14:06   –2 +/
Я уважаю Кейса Кука больше, чем Линуса, НО в этой ситуации я согласен с Линусом. 🤷‍♂️💬

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #49

28. Сообщение от Аноним (28), 31-Дек-24, 14:54   +1 +/
К полному хешу можно еще unix-timestamp добавить для надежности.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #35

32. Сообщение от Аноним (32), 31-Дек-24, 15:07   –3 +/
Не понимаю местных комментаторов, которым коллизии непочем. Коллизии - это страшно, нужно предотвращать, удлинять. ShA-1 в целом тоже уже устаревшая хэш-функция, но понимаю, что на sha2 менять мб затруднительно
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #38

34. Сообщение от bonifatium (?), 31-Дек-24, 16:08   +4 +/
правда в том, что наглядность и удобность 12- и 16-ти символьных short hash'ей одинаковая. Они одинаково длинные для запоминания и необходимости копирования, а для билд/чек скриптов это все без разницы.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #79, #81

35. Сообщение от bonifatium (?), 31-Дек-24, 16:11   –2 +/
что бы что? проблема в коллизии первых 12 символов, а не в полном хэше
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28 Ответы: #67

36. Сообщение от Аноним (36), 31-Дек-24, 16:22   +/
Сокращение строковых значений и их последующее восстановление и сравнение - это глупость. Адреса криптокошельков, номера расчетных счетов - тоже строковые значения.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #39

37. Сообщение от Аноним (37), 31-Дек-24, 16:32   –1 +/
т.е. они просто берут первые 12 символов от хеша?
Гениально!
"Оставайтесь, у нас. Будете гениальным механиком планеты!" (с)

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #40, #42, #68

38. Сообщение от Аноним (11), 31-Дек-24, 16:36   +3 +/
Проснитесь уже, для индентификации коммита используется 160 битный хэш, и количество коллизий там минимальное, в случае возникновения коллизии легко можно скипнуть коммит, и сделать его снова, это событие довольно редко. Речь в статье идет не про сам хэш, а про транкейт hex строки из 160 битного хэша, до короткого хэша вида f293418d и этот хэш нигде не хранится в метаданных, это не более чем строка поиска. Поэтому попытки комментаторов сделать из мухи слона выглядят довольно безграмотно. Короткий хэш используется обычно в связки git log --oneline, а дальше например git show короткий_хэш. Короткий хэш лишь облегчается поиск хэша, занимает меньше места, служит для удобства, и не является какой-либо реальной ссылкой. Тот же гитхаб к примеру показывает текст ссылки на комминт как короткий хэш, а сама ссылка уже ведет на полноценный - длинный 160 битный хэш. Если кто-то использует не корректно короткий хэш и привязывает к нему какие-то данные, это его проблемы, и не корректное использование короткого хэша. Кроме как для сокращения выводы на экране и поиска он нигде не должен быть использован.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32 Ответы: #50, #59

39. Сообщение от Аноним (-), 31-Дек-24, 16:37   +/
Коллизии настролько редки, что решили оставить всё как есть а не усложнять.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36

40. Сообщение от Аноним (-), 31-Дек-24, 16:38   +/
А что туту такого. На то и короткие.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37

42. Сообщение от Аноним (11), 31-Дек-24, 16:40   +1 +/
Да, потому что это не реальная ссылка, а лишь удобный метод сокращения вывода на экране! Он даже не является реальной ссылкой на какой-то коммит, а лишь являет более удобной подстрокой, для текстового поиска, отсюда мы можем иметь сколько угодно много таких одинаковых подстрок.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37 Ответы: #58, #75

43. Сообщение от Чуть более чем полностью анонимный аноним (?), 31-Дек-24, 17:26   +/
"640 КБ на самом деле хватит всем"
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #61, #69

46. Сообщение от Аноним (-), 31-Дек-24, 18:28   +/
> Сокращённые идентификаторы коммитов формируются через оставление
> первых 12 символов от хэша SHA-1 (48 бит из 160 бит)

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #53

47. Сообщение от Аноним (-), 31-Дек-24, 18:30   +2 +/
> А как этим можно злоупотребить? Я пример понял но вот реальный обход нет.
> Да и Торвальдс и так все сам читает.

Это сложно ибо при этом патч должен осмыленно выглядеть и проч, не вызывая подозрений. Но те кто удумал сократить хеши до 48 бит - все же нарываются. Простите, но высокосекурный DES с 56 битов вынесли полным перебором еще во времена царя гороха. А некоторые до сих пор не доперли что так делать не надо.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #57

48. Сообщение от Аноним (-), 31-Дек-24, 18:32   +/
> Пользуйтесь SVN: 1,2,... 100000 цифирьки увеличиваются и никогда никаких коллизий.

Ога, сломал 1 сервак - и выгрузил всей толпе неведомые фекальи. А без сервака этот антик вообще неоперабелен, и уж точно такой подарок проверками по локальным репам замечен не будет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

49. Сообщение от Аноним (-), 31-Дек-24, 18:34   +/
> Я уважаю Кейса Кука больше, чем Линуса, НО в этой ситуации я согласен с Линусом. 🤷‍♂️💬

Да это не киса куку предложил хрень с base36, как по мне - так стоит просто оперировать полными хешами. По хорошему - перйдя на SHA256.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25

50. Сообщение от Аноним (-), 31-Дек-24, 18:38   +1 +/
> Проснитесь уже, для индентификации коммита используется 160 битный хэш,
> и количество коллизий там минимальное,

Для SHA-1 все же известны криптографические атаки. Конечно на слом 160 битов - да еще с теми constraints - ресурсов надо многократно больше. Но совсем не столько сколько ожидалось. А вот SHA256... там, видите ли, генерация "нужного" хеша основа майнинга. Если б кто-то сумел в предсказуемые хеши, уже миллиардером был бы. Потому что pow сводится к подгону SHA256 до нужного числа нолей в начале. Если удалось - ЗБС, вы намайнили блок, профит ваш! Правда, есть перестроить сложность если вы будете блоки слишком бытсро фигачить - но не сразу - и к тому же профит все же уйдет от остальных майнеров к более успешному шустряку.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38

51. Сообщение от Аноним (52), 31-Дек-24, 19:01   –1 +/
Если бы Линус не разгонял этих горе новаторов не было бы сейчас никакого ядра. Сначала они пропихнут длинную коммитов, а потом зонд.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #54

52. Сообщение от Аноним (52), 31-Дек-24, 19:03   +/
Ненужно ударяться в преждевременную оптимизацию.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #72

53. Сообщение от Аноним (53), 31-Дек-24, 19:07   +/
Это хэш коммитов ЯДРА. Нафига ты коммитишь каждые 2 символа?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #63

54. Сообщение от Аноним (53), 31-Дек-24, 19:13   +/
Самое странное, зачем делать уязвимости в ядре, когда полно приложух работающих с привилегиями ядра, и за которыми особо не смотрят. Наверняка специально отвлекают внимание на ядро, чтобы и дальше никто не смотрел.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51 Ответы: #64

56. Сообщение от Аноним (56), 31-Дек-24, 19:36   +/
git уже давно умеет не только sha1, а вообще давно нужно перейти на sha3-512
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #60

57. Сообщение от bonifatium (?), 31-Дек-24, 19:54   +/
короткий хэш - это просто обрезанный до n символов полный хэш (для человеков и ui). сами хэши остаются как были
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47 Ответы: #62

58. Сообщение от Аноним (37), 31-Дек-24, 20:10    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42

59. Сообщение от Аноним (59), 31-Дек-24, 20:18   +/
> можно скипнуть коммит, и сделать его снова

Можно поподробнее? С точки зрения использования гита из командной строки это как будет выглядеть?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38 Ответы: #65

60. Сообщение от Аноним (60), 31-Дек-24, 20:46   +/
Он на GitHub слать не умеет так. Да и GitHub принимать не умеет так.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #56 Ответы: #66

61. Сообщение от Аноним (-), 31-Дек-24, 22:10   +/
Эта та самая, знаменитая цитата Билла Гейтса?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #43

62. Сообщение от Аноним (62), 31-Дек-24, 23:33   +3 +/
> короткий хэш - это просто обрезанный до n символов полный хэш
> (для человеков и ui). сами хэши остаются как были

Если удалось на...ть человека, показав ему короткий хэш такой же как заявлено - он его и втянет, нисколько не сомневаясь что все как надо. А то что там хвост не совпадал... кто ж его знал, если попросили - вот это?!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57

63. Сообщение от Аноним (-), 31-Дек-24, 23:48   –1 +/
> Это хэш коммитов ЯДРА. Нафига ты коммитишь каждые 2 символа?

Вон там гражданин показал - что задавшись целью можно подогнать такой же "на вид" (сокрашенный хеш) комит - с другим содержимым. А вот это уже не айс. Ибо открывает почву для злоупотреблений. Конечно там еще пуллы по иерархии и все же это читают - но лучше пусть двуногие И машины обеспечивают 2 контура проверок, чем чисто на одних глазах выезжать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53

64. Сообщение от Аноним (-), 31-Дек-24, 23:49   +/
> Самое странное, зачем делать уязвимости в ядре, когда полно приложух работающих с
> привилегиями ядра

Это как? Мне уже интересно, право. Примеры такой приложухи? :)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #54

65. Сообщение от Аноним (11), 31-Дек-24, 23:50   +1 +/
Не благодарите:
git add blblba
git commit -S
-- ошибка при создании коммита
git commit -S

Хэш формируется командой git commit или git merge.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #59 Ответы: #73, #76

66. Сообщение от Аноним (-), 31-Дек-24, 23:50   +/
> Он на GitHub слать не умеет так. Да и GitHub принимать не умеет так.

Да и хрен с ним с гитхабом. Майкрософт его уже и так почти доломал, а с их маркетинговым булшитом - скоро доломает окончательно.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #60

67. Сообщение от Neon (??), 01-Янв-25, 02:46   +/
А на фига использовать только первые 12 символов ?! Какой умник это придумал ?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35 Ответы: #74

68. Сообщение от Neon (??), 01-Янв-25, 02:47   –1 +/
Да, талантливые ребята. Прямо как те, кто заложили  год кодировал двумя символами. Заранее заложенная мина замедленного действия.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37

69. Сообщение от Neon (??), 01-Янв-25, 02:48   +/
Два символа для хранения года в данных. Гениальная экономия))). Чтобы потом пострадать
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #43

72. Сообщение от Илья (??), 01-Янв-25, 09:09   +4 +/
> Ненужно ударяться в преждевременную оптимизацию.

Глупый, что-ли? Коллизии выстреливают года через два, это именно то место, которое нужно предварительно правильно делать

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #52

73. Сообщение от Аноним (-), 01-Янв-25, 09:21   +/
Короткие идентификаторы используются для быстрого поиска, а не для коммитов. Попробуй потоньше.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #65 Ответы: #77

74. Сообщение от Аноним (-), 01-Янв-25, 09:21   +/
Потому-что 12 символов это коротко.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #67

75. Сообщение от Rus_Trololo (ok), 01-Янв-25, 12:20   +/
>Возникновение коллизий, при которых несколько разных изменений оказываются связаны с одним сокращённым идентификатором, могут привести к нарушению работы инструментов для анализа и проверки изменений, учитывающих содержимое тегов "Fixes".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42

76. Сообщение от Аноним (59), 01-Янв-25, 20:34   +/
Всё же поблагодарю. Спасибо за информацию!

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #65

77. Сообщение от Аноним (59), 01-Янв-25, 20:36   +/
Ненене, мой вопрос к анониму выше касался именно (гипотетической) ситуации с полным идентификатором коммита. Спасибо ему за ответ.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #73

78. Сообщение от Dmitry (??), 01-Янв-25, 21:49   +1 +/
Svn централизованная система и поэтому это в принципе возможно
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15 Ответы: #80

79. Сообщение от Аноним (79), 02-Янв-25, 07:38   +/
Во-во. Мы вот в нашей компании сыздавна использовали полные id коммитов где только можно (в почте, JIRA и тп). Какая разница что копировать по двойному клику-то?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34

80. Сообщение от нах. (?), 03-Янв-25, 12:19   +/
к счастью авторы hg не были в курсе, что это в принципе невозможно, и у них в dvcs тоже можно использовать нормальные номера версий.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #78 Ответы: #82

81. Сообщение от нах. (?), 03-Янв-25, 12:22   +/
да, то и другое - г-но полное.

Вот как ты собираешься обсуждать с коллегами изменение с хэшем <somerandomshit> ?

Только человек в принципе не умеющий пользоваться vcs (угадайте, кто ж это был) мог придумать эту чушь.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34 Ответы: #84

82. Сообщение от Аноним (82), 03-Янв-25, 18:35    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #80

83. Сообщение от Соль земли (?), 09-Янв-25, 10:10   +/
Можно же добавить проверку на уже существующие и использовать короткие, пока не кончатся. Думаю, этого Торвальдс и хочет.
Ответить | Правка | Наверх | Cообщить модератору

84. Сообщение от bonifatium (?), 07-Фев-25, 20:10   +/
> да, то и другое - г-но полное.
> Вот как ты собираешься обсуждать с коллегами изменение с хэшем <somerandomshit> ?
> Только человек в принципе не умеющий пользоваться vcs (угадайте, кто ж это
> был) мог придумать эту чушь.

хэши не для обсуждения с коллегами нужны

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #81 Ответы: #85

85. Сообщение от нах. (?), 07-Фев-25, 21:20   +/
а версий у вас нет. Поэтому когда надо сказать "а вот в этом изменении было вот такое" - остаются только хэши.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #84


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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