improve temp dir security
authorJoey Hess <joeyh@joeyh.name>
Wed, 16 Dec 2015 00:20:37 +0000 (20:20 -0400)
committerJoey Hess <joeyh@joeyh.name>
Wed, 16 Dec 2015 00:21:48 +0000 (20:21 -0400)
commit96dd0f4ebe704dcb54f2b9667084a7242d85558f
treef82b4564bcb4f7f05c6b06ffc15eb80c40cbc7ee
parent04e00146edd3b126b403e08c9674155c374edd03
improve temp dir security

http://bugs.debian.org/807341

* Fix insecure temporary permissions when git-annex repair is used in
  in a corrupted git repository.

  Other calls to withTmpDir didn't leak any potentially private data,
  but repair clones the git repository to a temp directory which is made
  using the user's umask. Thus, it might expose a git repo that is
  otherwise locked down.

* Fix potential denial of service attack when creating temp dirs.

  Since withTmpDir used easily predictable temporary directory names,
  an attacker could create foo.0, foo.1, etc and as long as it managed to
  keep ahead of it, could prevent it from ever returning.

  I'd rate this as a low utility DOS attack. Most attackers in a position
  to do this could just fill up the disk /tmp is on to prevent anything
  from writing temp files. And few parts of git-annex use withTmpDir
  anyway, so DOS potential is quite low.

Examined all callers of withTmpDir and satisfied myself that
switching to mkdtmp and so getting a mode 700 temp dir wouldn't break any
of them.

Note that withTmpDirIn continues to not force temp dir to 700.
But it's only used for temp directories inside .git/annex/wherever/
so that is not a problem.

Also re-audited all other uses of temp files and dirs in git-annex.
Utility/Tmp.hs
debian/changelog