Commit graph

24083 commits

Author SHA1 Message Date
Joey Hess
e00b3ab3d5
doc typo 2018-06-18 15:57:13 -04:00
Joey Hess
3c0a538335
allow ftp urls by default
They're no worse than http certianly. And, the backport of these
security fixes has to deal with wget, which supports http https and ftp
and has no way to turn off individual schemes, so this will make that
easier.
2018-06-18 15:37:17 -04:00
zjs@6d8d0d7eaa9899fb198baa3eb90d570c14abd2b8
ac71326021 Error trying to run git-annex on Android version 8.1 2018-06-18 19:03:35 +00:00
Joey Hess
c93b6c1e08
devblog 2018-06-18 14:27:16 -04:00
Joey Hess
71d39caf5c
add security page with current and past security holes 2018-06-18 14:19:58 -04:00
anarcat
6d2616f86e some issues with anonymous pushes 2018-06-18 12:48:16 +00:00
anarcat
d889d9666d hashdeep integration 2018-06-18 12:45:32 +00:00
yves.noirjean@3f9b06d19a920fbf5c82340c362e5971b00d4af2
d8de48ddee Added a comment 2018-06-18 11:25:18 +00:00
Joey Hess
8703fdd3b7
add 2018-06-17 16:13:45 -04:00
Joey Hess
e62c4543c3
default to not using youtube-dl, for security
Pity, but same reasoning as curl applies to it.

This commit was sponsored by Peter on Patreon.
2018-06-17 14:51:02 -04:00
Joey Hess
b54b2cdc0e
prevent http connections to localhost and private ips by default
Security fix!

* git-annex will refuse to download content from http servers on
  localhost, or any private IP addresses, to prevent accidental
  exposure of internal data. This can be overridden with the
  annex.security.allowed-http-addresses setting.
* Since curl's interface does not have a way to prevent it from accessing
  localhost or private IP addresses, curl defaults to not being used
  for url downloads, even if annex.web-options enabled it before.
  Only when annex.security.allowed-http-addresses=all will curl be used.

Since S3 and WebDav use the Manager, the same policies apply to them too.

youtube-dl is not handled yet, and a http proxy configuration can bypass
these checks too. Those cases are still TBD.

This commit was sponsored by Jeff Goeke-Smith on Patreon.
2018-06-17 13:30:28 -04:00
Joey Hess
28720c795f
limit url downloads to whitelisted schemes
Security fix! Allowing any schemes, particularly file: and
possibly others like scp: allowed file exfiltration by anyone who had
write access to the git repository, since they could add an annexed file
using such an url, or using an url that redirected to such an url,
and wait for the victim to get it into their repository and send them a copy.

* Added annex.security.allowed-url-schemes setting, which defaults
  to only allowing http and https URLs. Note especially that file:/
  is no longer enabled by default.

* Removed annex.web-download-command, since its interface does not allow
  supporting annex.security.allowed-url-schemes across redirects.
  If you used this setting, you may want to instead use annex.web-options
  to pass options to curl.

With annex.web-download-command removed, nearly all url accesses in
git-annex are made via Utility.Url via http-client or curl. http-client
only supports http and https, so no problem there.
(Disabling one and not the other is not implemented.)

Used curl --proto to limit the allowed url schemes.

Note that this will cause git annex fsck --from web to mark files using
a disallowed url scheme as not being present in the web. That seems
acceptable; fsck --from web also does that when a web server is not available.

youtube-dl already disabled file: itself (probably for similar
reasons). The scheme check was also added to youtube-dl urls for
completeness, although that check won't catch any redirects it might
follow. But youtube-dl goes off and does its own thing with other
protocols anyway, so that's fine.

Special remotes that support other domain-specific url schemes are not
affected by this change. In the bittorrent remote, aria2c can still
download magnet: links. The download of the .torrent file is
otherwise now limited by annex.security.allowed-url-schemes.

This does not address any external special remotes that might download
an url themselves. Current thinking is all external special remotes will
need to be audited for this problem, although many of them will use
http libraries that only support http and not curl's menagarie.

The related problem of accessing private localhost and LAN urls is not
addressed by this commit.

This commit was sponsored by Brett Eisenberg on Patreon.
2018-06-16 11:57:50 -04:00
Joey Hess
b6ae4c0509
Merge branch 'master' of ssh://git-annex.branchable.com 2018-06-16 10:02:18 -04:00
git-annex.branchable.com@07c0f8919010cc703ae7eea746d9b494c153291f
7a44c2c8ef removed 2018-06-16 09:49:19 +00:00
git-annex.branchable.com@07c0f8919010cc703ae7eea746d9b494c153291f
fc468eed88 Added a comment: this one is invalid 2018-06-16 09:48:53 +00:00
git-annex.branchable.com@07c0f8919010cc703ae7eea746d9b494c153291f
75c4c947d5 2018-06-16 09:14:38 +00:00
andrew@2e5aa03dfdc624af77a5957dd345d28430342a9c
785cb276f0 posted issue 2018-06-15 22:23:58 +00:00
Joey Hess
f886859174
remove broken link 2018-06-15 17:53:37 -04:00
Joey Hess
c8559a0403
close old bug 2018-06-15 14:44:32 -04:00
andrew
05cee8ada4 Added a comment 2018-06-15 15:59:04 +00:00
Joey Hess
e592635fe6
improve wording 2018-06-14 17:14:13 -04:00
Joey Hess
690bb303f9
more thoughts 2018-06-14 14:00:49 -04:00
Joey Hess
3f80aaea3d
some open questions 2018-06-14 13:42:25 -04:00
Joey Hess
466d3fbaab
more thoughts 2018-06-14 13:30:34 -04:00
Joey Hess
8b734da876
thoughts 2018-06-14 12:32:18 -04:00
ghen1
1a0620fdf8 Added a comment 2018-06-13 17:18:49 +00:00
https://christian.amsuess.com/chrysn
c7dc4ee5c6 Added a comment: Update on using SAF 2018-06-13 14:57:10 +00:00
lykos@d125a37d89b1cfac20829f12911656c40cb70018
a439041e40 Added a comment 2018-06-13 10:46:25 +00:00
https://christian.amsuess.com/chrysn
93befcea96 Added a comment: Re: comment 5 2018-06-12 19:01:09 +00:00
Joey Hess
760f66829a
display p2pstdio stderr after auth
Display error messages that come from git-annex-shell when the p2p protocol
is used, so that diskreserve messages, IO errors, etc from the remote side
are visible again.

Felt like it should perhaps use outputError, so --json-error-messages would
include these, but as an async IO action, it can't, and this would need
MessageState to be converted to a tvar. Anyway, when not using p2pstdio,
that's not done; nor is it done for stderr from external special remotes
or other commands, so punted on the idea for now.

This commit was sponsored by mo on Patreon.
2018-06-12 14:59:05 -04:00
Joey Hess
90a3afb60f
adb: Android serial numbers are not all 16 characters long, so accept other lengths.
I can't find any documentation of how long it should be. Hard to imagine
it being shorter than 4 characters though, so put that in as a conservative
lower bound.

This commit was sponsored by Nick Piper on Patreon.
2018-06-12 13:56:01 -04:00
Joey Hess
98168e8f2e
Merge branch 'master' of ssh://git-annex.branchable.com 2018-06-12 12:55:41 -04:00
Joey Hess
b0492384bb
response 2018-06-12 12:54:29 -04:00
lykos@d125a37d89b1cfac20829f12911656c40cb70018
75e4e45bea 2018-06-12 16:46:40 +00:00
lykos@d125a37d89b1cfac20829f12911656c40cb70018
eca49304fe 2018-06-12 16:46:22 +00:00
Joey Hess
1694642969
document that multiple groupwanted are not combined 2018-06-12 12:44:53 -04:00
Joey Hess
e615357bdd
response 2018-06-12 12:16:18 -04:00
Rizwan
a9d271a616 Added a comment: Are these methods still working? 2018-06-12 14:58:03 +00:00
madapeedikakkaran@2c5c8bb4520ebf2526afb49c8dcbcb60fb295973
80917c2958 Added a comment: Termux Error 2018-06-12 11:54:02 +00:00
ghen1
0c5b4582a6 2018-06-11 03:29:06 +00:00
Joey Hess
e489b28bd7
Merge branch 'master' of ssh://git-annex.branchable.com 2018-06-08 12:03:53 -04:00
Joey Hess
c3c28f7617
add GETINFO to external protocol (for ronnypfa)
External special remotes can now add info to `git annex info $remote`, by
replying to the GETINFO message.

Had to generalize some helpers to allow consuming multiple messages from
the remote.

The code added to Remote/* here is AGPL licensed, thus changed the license
of the files.

This commit was sponsored by Jake Vosloo on Patreon.
2018-06-08 11:56:24 -04:00
yves.noirjean@3f9b06d19a920fbf5c82340c362e5971b00d4af2
2b45511bd5 Added a comment 2018-06-08 15:17:17 +00:00
yves.noirjean@3f9b06d19a920fbf5c82340c362e5971b00d4af2
8397151b2b 2018-06-08 13:03:20 +00:00
yves.noirjean@3f9b06d19a920fbf5c82340c362e5971b00d4af2
cb57900e7a 2018-06-08 13:02:34 +00:00
sudoman
8cba78f266 initial but submission 2018-06-05 22:08:57 +00:00
Joey Hess
0f566ed242
removal of the rest of remoteGitConfig
In keyUrls, the GitConfig is used only by annexLocations
to support configured Differences. Since such configurations affect all
clones of a repository, the local repo's GitConfig must have the same
information as the remote's GitConfig would have. So, used getGitConfig
to get the local GitConfig, which is cached and so available cheaply.

That actually fixed a bug noone had ever noticed: keyUrls is
used for remotes accessed over http. The full git config of such a
remote is normally not available, so the remoteGitConfig that keyUrls
used would not have the necessary information in it.

In copyFromRemoteCheap', it uses gitAnnexLocation,
which does need the GitConfig of the remote repo itself in order to
check if it's crippled, supports symlinks, etc. So, made the
State include that GitConfig, cached. The use of gitAnnexLocation is
within a (not $ Git.repoIsUrl repo) guard, so it's local, and so
its git config will always be read and available.

(Note that gitAnnexLocation in turn calls annexLocations, so the
Differences config it uses in this case comes from the remote repo's
GitConfig and not from the local repo's GitConfig. As explained above
this is ok since they must have the same value.)

Not very happy with this mess of different GitConfigs not type-safe and
some read only sometimes etc. Very hairy. Think I got it this change
right. Test suite passes..

This commit was sponsored by Ethan Aubin.
2018-06-05 14:48:37 -04:00
Joey Hess
a5f598a6aa
remove use of remoteGitConfig
Unfortunately one more use remains..

This should be just as fast as the other method. The remote's Git.Repo
has already had its config read, so Annex.new's call to Git.Config.read
is a noop.

Thid commit was sponsored by andrea rota.
2018-06-05 13:15:04 -04:00
Joey Hess
fc5888300f
fix annex-checkuuid
Fixed annex-checkuuid implementation, so that remotes configured that way
can be used. This was 100% broken from the first commit of it, oops.

This commit was sponsored by Øyvind Andersen Holm.
2018-06-04 16:52:22 -04:00
Joey Hess
f1303e9146
close 2018-06-04 16:52:10 -04:00