Stefan Sperling wrote on Wed, May 10, 2017 at 13:34:07 +0200:
> On Wed, May 10, 2017 at 09:11:50AM +0000, Daniel Shahaf wrote:
> > > Details:
> > > ========
> > > 
> > >   In February 2017 a group of researchers released two PDF files which have
> > >   different content but produce the same SHA1 checksum. This was the first
> > >   publicly known SHA1 collision ever produced.
> > > 
> > >   If both of these files are committed to a Subversion repository, Subversion
> > >   de-duplicates content based on the SHA1 checksum and only the content of
> > 
> > Missing qualifiers: only for FSFS and FSX and only if rep-sharing is
> > enabled.  (I see the "Recommendations" section says that, but I think
> > they belong here.)
> 
> Ack, fixed.
You've added the "only FSFS and FSX" part but not the "only if
rep-sharing is enabled" part.  Was that intentional?
(I see the "Recommendations" section mentions enabling rep-sharing
post-upgrade, but that's separate to stating that repositories that have
rep-sharing disabled _today_ are not vulnerable.)
> > Moreover, the error is not spurious; on the contrary: it functions
> > exactly as designed, and prevents the wrong file from being used.  Let's
> > say this in the advisory?
> 
> Too much detail, I'd say.
My intention with this text was to avoid readers forming the (mistaken)
impression that the md5 checksum error is a bug and concluding that
libsvn is brittle.  The md5 error is a safety net functioning as
designed.  I know this; you know this; the reader might not.
> > >   introduced the problem. This dump file can be loaded into a new repository.
> > >   If there were more commits after the problematic revision then dump and load
> > >   all of these subsequent revisions as well.
> > 
> > Mention 'svndumpfilter exclude'?
> 
> That may be a third possibility. But has anyone tested it?
I just did:
[[[
% svnlook tree r
/
 shattered-1.pdf
 shattered-2.pdf
% svnadmin create r2 
% svnadmin dump -q r | svndumpfilter exclude /shattered-2.pdf | svnadmin load r2  
Excluding prefixes:
   '/shattered-2.pdf'
Revision 0 committed as 0.
Revision 1 committed as 1.
<<< Started new transaction, based on original revision 1
Dropped 1 node:
   '/shattered-2.pdf'
     * editing path : shattered-1.pdf ... done.
------- Committed revision 1 >>>
% svn cat file://$PWD/r2/shattered-1.pdf | md5sum
ee4aa52b139d925f8d8884402b0a750c  -
% svn cat file://$PWD/r/shattered-1.pdf | md5sum
ee4aa52b139d925f8d8884402b0a750c  -
]]]
Thanks for the fixes!
Cheers,
Daniel
Received on 2017-05-11 07:44:58 CEST