Commit graph

30536 commits

Author SHA1 Message Date
Joey Hess
df11e54788
avoid the dashed ssh hostname class of security holes
Security fix: Disallow hostname starting with a dash, which would get
passed to ssh and be treated an option. This could be used by an attacker
who provides a crafted ssh url (for eg a git remote) to execute arbitrary
code via ssh -oProxyCommand.

No CVE has yet been assigned for this hole.
The same class of security hole recently affected git itself,
CVE-2017-1000117.

Method: Identified all places where ssh is run, by git grep '"ssh"'
Converted them all to use a SshHost, if they did not already, for
specifying the hostname.

SshHost was made a data type with a smart constructor, which rejects
hostnames starting with '-'.

Note that git-annex already contains extensive use of Utility.SafeCommand,
which fixes a similar class of problem where a filename starting with a
dash gets passed to a program which treats it as an option.

This commit was sponsored by Jochen Bartl on Patreon.
2017-08-17 22:11:31 -04:00
Joey Hess
25e55e7c2f
typo 2017-08-17 19:51:39 -04:00
Joey Hess
749d69f12d
devblog 2017-08-17 17:13:12 -04:00
Joey Hess
79020a9c26
avoid broken version of xss-sanitize
https://github.com/yesodweb/haskell-xss-sanitize/issues/17
2017-08-17 17:12:48 -04:00
Joey Hess
fdbfe88168
fix external script for filenames with spaces from protocol
Fix the external special remotes git-annex-remote-ipfs,
git-annex-remote-torrent and the example.sh template to correctly support
filenames with spaces.

This commit was sponsored by John Peloquin on Patreon.
2017-08-17 16:20:09 -04:00
Joey Hess
dafafad115
external: nice error message for keys with spaces in their name
External special remotes will refuse to operate on keys with spaces in
their names. That has never worked correctly due to the design of the
external special remote protocol. Display an error message suggesting
migration.

Not super happy with this, but it's a pragmatic solution. Better than
complicating the external special remote interface and all external special
remotes.

Note that I only made it use SafeKey in Request, not Response. git-annex
does not construct a Response, so that would not add any safety. And
presumably, if git-annex avoids feeding any such keys to an external
special remote, it will never have a reason to make a Response using such a
key. If it did, it would result in a protocol error anyway.

There's still a Serializeable instance for Key; it's used by P2P.Protocol.
There, the Key is always in the final position, so it's ok if it contains
spaces.

Note that the protocol documentation has been fixed to say that the File
may contain spaces. One way that can happen, even though the Key can't,
is when using direct mode, and the work tree filename contains spaces.
When sending such a file to the external special remote the worktree
filename is used.

This commit was sponsored by Thom May on Patreon.
2017-08-17 16:18:34 -04:00
Joey Hess
5421e8f695
comment 2017-08-17 15:15:40 -04:00
Joey Hess
87afff508a
Merge branch 'master' of ssh://git-annex.branchable.com 2017-08-17 15:11:56 -04:00
https://launchpad.net/~felixonmars
b985eb2d75 Added a comment 2017-08-17 19:10:24 +00:00
Joey Hess
96c055eda2
migrate: WORM keys containing spaces will be migrated to not contain spaces anymore
To work around the problem that the external special remote protocol does
not support keys containing spaces.

This commit was sponsored by Denis Dzyubenko on Patreon.
2017-08-17 15:09:38 -04:00
Joey Hess
51801cff6a
Prevent spaces from being embedded in the name of new WORM keys, as that handing spaces in keys would complicate things like the external special remote protocol. 2017-08-17 14:46:33 -04:00
Joey Hess
8cff67841c
plan 2017-08-17 14:41:21 -04:00
Joey Hess
61e96621d8
use DynamicConfig to handle cost-command
This commit was sponsored by Jake Vosloo on Patreon.
2017-08-17 14:04:29 -04:00
Joey Hess
68a0f99ba6
Merge branch 'master' of ssh://git-annex.branchable.com 2017-08-17 13:58:14 -04:00
Joey Hess
677fa66249
temporarily --force-reinstalls 2017-08-17 13:57:47 -04:00
Joey Hess
d39c120afa
add annex-ignore-command and annex-sync-command configs
Added remote configuration settings annex-ignore-command and
annex-sync-command, which are dynamic equivilants of the annex-ignore
and annex-sync configurations.

For this I needed a new DynamicConfig infrastructure. Its implementation
should be as fast as before when there is no dynamic config, and it caches
so shell commands are only run once.

Note that annex-ignore-command exits nonzero when the remote should be ignored.
While that may seem backwards, it allows using the same command for it as
for annex-sync-command when you want to disable both.

This commit was sponsored by Trenton Cronholm on Patreon.
2017-08-17 13:54:14 -04:00
michalrus
60f6445532 Added a comment 2017-08-17 17:53:24 +00:00
pitsa@5f5d24a1fb7ba0d050ae7cf95b4c3032002e8e38
14fc9318d5 Added a comment: Thanks 2017-08-17 16:35:33 +00:00
Joey Hess
86428f6261
comment 2017-08-17 12:17:47 -04:00
Joey Hess
05ef86fcf3
comment 2017-08-17 12:05:30 -04:00
Joey Hess
801c636caf
comment 2017-08-17 11:58:41 -04:00
Joey Hess
537dff4958
response 2017-08-17 11:55:56 -04:00
Joey Hess
04de2ede83
close 2017-08-17 11:49:42 -04:00
Joey Hess
a0b1548cb3
Merge branch 'master' of ssh://git-annex.branchable.com 2017-08-17 11:01:27 -04:00
Joey Hess
0a2f7c261f
fix build with old http-client versions 2017-08-17 11:00:48 -04:00
Joey Hess
cd4c97156e
force update of cabal libs 2017-08-17 11:00:37 -04:00
CandyAngel
22df6eaa74 Added a comment 2017-08-17 10:22:54 +00:00
olaf
df59575cdc Added a comment: manual mode? 2017-08-17 07:35:41 +00:00
Joey Hess
266bf43632
make import work with Win32 instead of Win32-extras 2017-08-16 17:51:29 -04:00
Joey Hess
9d150ba60c
Merge branch 'master' of ssh://git-annex.branchable.com 2017-08-16 17:44:24 -04:00
Joey Hess
4173decf27
Windows: Win32 package has subsumed Win32-extras; update dependency. 2017-08-16 17:43:38 -04:00
https://openid.stackexchange.com/user/8a69a637-97cb-41e6-8f45-00f08ba54d6e
332ec5669c Added a comment 2017-08-16 18:18:27 +00:00
https://openid.stackexchange.com/user/8a69a637-97cb-41e6-8f45-00f08ba54d6e
e15f5f9dae Added a comment 2017-08-16 17:16:14 +00:00
https://openid.stackexchange.com/user/8a69a637-97cb-41e6-8f45-00f08ba54d6e
64bbd451f5 Added a comment 2017-08-16 17:10:58 +00:00
https://openid.stackexchange.com/user/8a69a637-97cb-41e6-8f45-00f08ba54d6e
a6a0fa9323 2017-08-16 16:49:46 +00:00
woffs
f6550dc7e7 Added a comment 2017-08-16 13:02:56 +00:00
michalrus
eaf2137ee7 Added a comment 2017-08-16 12:58:25 +00:00
michalrus
ee72ef5c3a Added a comment 2017-08-16 12:47:48 +00:00
michalrus
9acc5f6a8e Added a comment 2017-08-16 11:03:03 +00:00
michalrus
f1fa56f388 2017-08-16 10:59:01 +00:00
olaf
7b2c6d45c6 Added a comment 2017-08-16 01:01:02 +00:00
olaf
d35f0a1e98 2017-08-15 23:42:07 +00:00
olaf
debbd6cad8 Added a comment 2017-08-15 23:28:58 +00:00
Joey Hess
7713c3e0ec
idea 2017-08-15 15:45:31 -04:00
Joey Hess
48a89f0f92
hmm 2017-08-15 15:31:01 -04:00
Joey Hess
73d04d5565
responses, bug I noticed 2017-08-15 14:42:22 -04:00
Joey Hess
19a784df03
comment 2017-08-15 14:07:12 -04:00
Joey Hess
fac77375f3
Merge branch 'master' of ssh://git-annex.branchable.com 2017-08-15 13:56:24 -04:00
Joey Hess
69dcb08d7a
Disable http-client's default 30 second response timeout when HEADing an url to check if it exists. Some web servers take quite a long time to answer a HEAD request. 2017-08-15 13:56:12 -04:00
Joey Hess
e5109468e2
forwarded 2017-08-15 13:53:51 -04:00