3 ms·
yeah my thoughts about git are similar. look at the two messages they have an an example: Key is part of a collision! It's a trap!yE'NsbK#ދW]{1gKmCx's/vr|
by flatiron 7y ago
yeah my thoughts about git are similar. look at the two messages they have an an example:
Key is part of a collision! It's a trap!yE'NsbK#ދW]{1gKmCx's/vr|
-pJO_,1$)uB1qXv#U)9ESU;p~0G:Y
ݕbBIjFra눰3&t'lB_!h5M([,˴QMK#|o5pv|i,+yYpݍD7_Rf\'GUZ,ϵdvAYAugV=Lk8_E 2
+nolBtxXoQt&+?Y3LP:'Qt(,ۛuԪWJm:A"M6<|B4kVv̨ޠA=M+m%殺j5N|EMA\Ed-
s&@u@:a?pq^Xf0U?R}
and
Practical SHA-1 chosen-prefix collision!'lka}vbI3,·W]Ǟ+gK}Cxs/v&r|
}-hRJO_
rO̳;bzC ,1&uRP-MXrU3aO;pr0:sY'2
l&r7#(A{oNyCJ_W,8
əbحBYީpFr2a8#&t+n_15q(_,ˤQMW#hzYMgVV=L,kO0E*N
+oc@BpXoᯖd&?+?[{3LвP&'U
t ( WJÏm\:A"6>>|SB(k;Vv̨ޠ^A=Y ;om%j-|cUAAۜEТ&@o@:La3psH^eXf0QJm
ݶd
they have the same sha1sum, but in all practicality its nonsense since both messages are pure trash. you couldn't have malicious C code that would have the same hash as non malicious C code in this example
- saalweachter 7y agoIsn't that like incredibly simple? Dump your garbage string behind a // or inside an #if 0, restrict the garbage string character set to characters which will not disturb that, and your compiler will whistle while it works.
- pathseeker 7y agoDepends on if the chosen prefix attack allows the content to appear arbitrarily in the middle of the byte stream like that.
- Thorrez 7y agoThat's exactly what a chosen prefix attack means. You choose the arbitrary prefixes. Then the garbage is inserted. Then (due to SHA1's Merkle–Damgård construction) you append a postfix that's mostly arbitrary (but the same in both files).
- flatiron 7y agoanyone checking diffs would notice that, or working on the file, etc. it wouldn't survive long
- saalweachter 7y agoHmmm, does the garbage string actually have to survive long? If there's a followup CL to "delete a garbage string that accidentally made it into the repo", which doesn't actually fix whatever else was added, would that get you anywhere?
- munk-a 7y agoI think active projects would detect this fine - but what if that commit was pushed to lpad and everyone ended up pulling it to local because it's a dependency of a dependency of a dependency in NPM? Or what if it's a really obscure library for parsing like... pyramidal jpeg2000s, are the library consumers going to be checking the source? Heck, most people already don't check download checksums unless their downloader does it automatically.