summaryrefslogtreecommitdiffstats
path: root/git-fetch.html
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-01-10 15:43:41 -0800
committerJunio C Hamano <gitster@pobox.com>2017-01-10 15:43:41 -0800
commit56ace3dc6b7a017d6acc8e6d1d2feb65257013d4 (patch)
treeee74fa5bf04df8a090959a61f59c19b7d7a3c5d3 /git-fetch.html
parent9e35abf2be7349a7bcfc5580b01ee69d5718b008 (diff)
downloadgit-htmldocs-56ace3dc6b7a017d6acc8e6d1d2feb65257013d4.tar.gz
Autogenerated HTML docs for v2.11.0-295-gd7dff
Diffstat (limited to 'git-fetch.html')
-rw-r--r--git-fetch.html42
1 files changed, 41 insertions, 1 deletions
diff --git a/git-fetch.html b/git-fetch.html
index 6ceb8ffc4..9a165370b 100644
--- a/git-fetch.html
+++ b/git-fetch.html
@@ -1642,6 +1642,46 @@ objects will eventually be removed by git&#8217;s built-in housekeeping (see
</div>
</div>
<div class="sect1">
+<h2 id="_security">SECURITY</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>The fetch and push protocols are not designed to prevent one side from
+stealing data from the other repository that was not intended to be
+shared. If you have private data that you need to protect from a malicious
+peer, your best option is to store it in another repository. This applies
+to both clients and servers. In particular, namespaces on a server are not
+effective for read access control; you should only grant read access to a
+namespace to clients that you would trust with read access to the entire
+repository.</p></div>
+<div class="paragraph"><p>The known attack vectors are as follows:</p></div>
+<div class="olist arabic"><ol class="arabic">
+<li>
+<p>
+The victim sends "have" lines advertising the IDs of objects it has that
+ are not explicitly intended to be shared but can be used to optimize the
+ transfer if the peer also has them. The attacker chooses an object ID X
+ to steal and sends a ref to X, but isn&#8217;t required to send the content of
+ X because the victim already has it. Now the victim believes that the
+ attacker has X, and it sends the content of X back to the attacker
+ later. (This attack is most straightforward for a client to perform on a
+ server, by creating a ref to X in the namespace the client has access
+ to and then fetching it. The most likely way for a server to perform it
+ on a client is to "merge" X into a public branch and hope that the user
+ does additional work on this branch and pushes it back to the server
+ without noticing the merge.)
+</p>
+</li>
+<li>
+<p>
+As in #1, the attacker chooses an object ID X to steal. The victim sends
+ an object Y that the attacker already has, and the attacker falsely
+ claims to have X and not Y, so the victim sends Y as a delta against X.
+ The delta reveals regions of X that are similar to Y to the attacker.
+</p>
+</li>
+</ol></div>
+</div>
+</div>
+<div class="sect1">
<h2 id="_bugs">BUGS</h2>
<div class="sectionbody">
<div class="paragraph"><p>Using --recurse-submodules can only fetch new commits in already checked
@@ -1668,7 +1708,7 @@ version.</p></div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
-Last updated 2016-07-19 14:36:50 PDT
+Last updated 2017-01-10 15:42:58 PST
</div>
</div>
</body>