[devs: see penultimate paragraph (grep for "Thoughts")]

Jacek Materna wrote on Thu, May 11, 2017 at 14:56:03 +0200:
> For review.

Thanks for the patch.  I'll review the form first, then the content.

Form:

1) Please use unified diff format, as generated by 'svn diff' or 'diff -u'.
What you posted was a reversed non-unified diff.

2) Please use a text/* MIME type.  Naming the attachment with a .txt
extension usually does that.  (It is easier to review patches that are
correctly MIME'd.)

3) One </a> closing tag was missing its slash.

4) Wrap the source to 80 columns.  (I like breaking source lines at
fullstops, but that's my personal preference, not a house style.)

Content: (see inline)

> <div class="h3" id="shatterd-sha1">
> <h3>How do I protect my repository from the SHA-1 Shattered vulnerability?
>   <a class="sectionlink" href="#shatterd-sha1"
>     title="Link to this section">&para;</a>
> </h3>
> 
> <p>Subversion's use of SHA-1 in how it processes content is subject to 
> hashing collisions as identified by <a 
> href="https://shattered.io/";>Google</a>). One of it's key assumptions in 
> processing content is that SHA-1 is unique for all objects.</p>

The word "its" is misspelled, but more importantly, its referent is
unclear.  I assume it means "Subversion's"?

> Subversion has two main areas of vulnerability.
> <br/>
> <ul>
> <li>The FS layer (repository) uses SHA-1.</li>
> <li>The Working Copy/RA layers use SHA-1.</li>
> </ul>

In user documentation I believe we say "FS backend" rather than "FS
layer".

> <p>
> The FS layer uses SHA-1 when identifying objects to store in the repository. 
> To prevent non duplicate content from being stored that has identical SHA-1, 
> upgrade to 1.9.6 (where would prevent storage of duplicates) or install the 
> pre-commit hook found <a 
> href="https://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/reject-known-sha1-collisions.sh";>here<a>.

This may sound like nitpicking, but trunk is unstable code and not
covered by a release's legal umbrella.  I think it would be better to
link to branches/1.10.x once it's created.

> As an aside, we welcome Windows developers to submit a pre-commit
> script for the Windows platform to the <a
> href="mailto:dev@subversion.apache.org";>Developer List<a>.

Another option here is to link to the relevant section of HACKING, see
https://subversion.apache.org/patches.  I don't have a preference one
way or the other.

Tangent: Speaking of that section of HACKING, I haven't read it in
a year or three.  Perhaps it's time we reviewed it and ensured it was as
unscary and easy to follow as possible, to make it easier for people to
get involved.

> </p>
> <p>
> The working copy/RA layer uses SHA-1 for de-duplication of content stored in 
> the working copy, and for performance reasons
> clients using the HTTP protocol will avoid fetching content with a SHA-1 
> checksum which has been fetched previously. There is no known workaround for 
> this vector except to prevent storage of the colliding objects in the first 
> place, via upgrade to 1.9.6 or installation of the aforementioned pre-commit 
> script.
> </p>
> <p>
> Storing content with SHA1 collisions it not a supported use case. If you have 
> repositories with colliding SHA-1 content we suggest you remove the content 
> from you repository and upgrade to 1.9.6 to prevent future insertion.</p>

I don't think we recommend to *remove* the content outright but to gzip
it or otherwise transform it.

> </div>

The last few paragraphs of the patch basically summarize sha1-advisory.txt;
some of the text is from there too.  I'm not sure how to best arrange
the information between the FAQ and the advisory (and, for that matter,
notes/api-errata/ if we choose to use it).  On the one hand there's DRY,
on the other hand, there's room for summaries.  Thoughts?

Thanks for the patch, Jacek.  I like the content; we just need to decide
where it should live :)

Daniel

Reply via email to