Thread (49 messages) 49 messages, 18 authors, 2017-02-28

Re: SHA1 collisions found

From: David Lang <hidden>
Date: 2017-02-23 18:18:46

On Thu, 23 Feb 2017, Joey Hess wrote:
Junio C Hamano wrote:
quoted
On Thu, Feb 23, 2017 at 8:43 AM, Joey Hess [off-list ref] wrote:
quoted
Since we now have collisions in valid PDF files, collisions in valid git
commit and tree objects are probably able to be constructed.
That may be true, but
https://public-inbox.org/git/Pine.LNX.4.58.0504291221250.18901@ppc970.osdl.org/
That's about someone replacing an valid object in Linus's repository
with an invalid random blob they found that collides. This SHA1
break doesn't allow generating such a blob anyway. Linus is right,
that's an impractical attack.

Attacks using this SHA1 break will look something more like:

* I push a "bad" object to a repo on github I set up under a
 pseudonym.
* I publish a "good" object in a commit and convince the maintainer to
 merge it.
* I wait for the maintainer to push to github.
* I wait for github to deduplicate and hope they'll replace the good
 object with the bad one I pre-uploaded, thus silently changing the
 content of the good commit the maintainer reviewed and pushed.
* The bad object is pulled from github and deployed.
* The maintainer still has the good object. They may not notice the bad
 object is out there for a long time.

Of course, it doesn't need to involve Github, and doesn't need to
rely on internal details of their deduplication[1];
that only let me publish the bad object under a psydonym.
read that e-mail again, it covers the case where a central server gets a blob replaced in it.

tricking a maintainerinto accepting a file that contains huge amounts of binary data in it is going to be a non-trivial task, and even after you trick them into accepting one bad file, you then need to replace the file they accepted with a new one (breaking into github or assuming that github is putting both files into the same repo, both of which are fairly unlikely)

David Lang
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help