add
This commit is contained in:
parent
e62c4543c3
commit
8703fdd3b7
4 changed files with 265 additions and 0 deletions
27
doc/devblog/day_499__security_hole.mdwn
Normal file
27
doc/devblog/day_499__security_hole.mdwn
Normal file
|
@ -0,0 +1,27 @@
|
|||
I'm writing this on a private branch, it won't be posted until a week from
|
||||
now when the security hole is disclosed.
|
||||
|
||||
Security is not compositional. You can have one good feature, and add
|
||||
another good feature, and the result is not two good features, but a new
|
||||
security hole. In this case
|
||||
[[bugs/security_hole_private_data_exposure_via_addurl]]. And it can be hard
|
||||
to spot this kind of security hole, but then once it's known it
|
||||
seems blindly obvious.
|
||||
|
||||
It came to me last night and by this morning I had decided the potential
|
||||
impact was large enough to do a coordinated disclosure. Spent the first
|
||||
half of the day thinking through ways to fix it that don't involve writing
|
||||
my own http library. Then started getting in touch with all the
|
||||
distributions' security teams. And then coded up a fairly complete fix for
|
||||
the worst part of the security hole, although a secondary part is going to
|
||||
need considerably more work.
|
||||
|
||||
It looks like the external special remotes are going to need at least some
|
||||
security review too, and I'm still thinking that part of the problem over.
|
||||
|
||||
Exhausted.
|
||||
|
||||
Today's work was sponsored by Trenton Cronholm
|
||||
[on Patreon](https://patreon.com/joeyh).
|
||||
|
||||
[[!meta date="Jun 15 2018 7:00 pm"]]
|
26
doc/devblog/day_500__security_hole_part_2.mdwn
Normal file
26
doc/devblog/day_500__security_hole_part_2.mdwn
Normal file
|
@ -0,0 +1,26 @@
|
|||
Most of the day was spent staring at the http-client source code and trying
|
||||
to find a way to add the IP address checks to it that I need to fully close
|
||||
the security hole.
|
||||
|
||||
In the end, I did find a way, with the duplication of a couple dozen lines
|
||||
of code from http-client. It will let the security fix be used with
|
||||
libraries like aws and DAV that build on top of http-client, too.
|
||||
|
||||
While the code is in git-annex for now, it's fully disconnected and
|
||||
would also be useful if a web browser were implemented in Haskell,
|
||||
to implement same-origin restrictions while avoiding DNS rebinding attacks.
|
||||
|
||||
Looks like http proxies and curl will need to be disabled by default,
|
||||
since this fix can't support either of them securely. I wonder how web
|
||||
browsers deal with http proxies, DNS rebinding attacks and same-origin?
|
||||
I can't think of a secure way.
|
||||
|
||||
Next I need a function that checks if an IP address is a link-local address
|
||||
or a private network address. For both ipv4 and ipv6. Could not find
|
||||
anything handy on hackage, so I'm gonna have to stare at some RFCs. Perhaps
|
||||
this evening, for now, it's time to swim in the river.
|
||||
|
||||
Today's work was sponsored by Jake Vosloo
|
||||
[on Patreon](https://patreon.com/joeyh)
|
||||
|
||||
[[!meta date="June 16 2018 4:00 pm"]]
|
13
doc/devblog/day_501__security_hole_part_3.mdwn
Normal file
13
doc/devblog/day_501__security_hole_part_3.mdwn
Normal file
|
@ -0,0 +1,13 @@
|
|||
Got the IP address restrictions for http implemented. (Except for http
|
||||
proxies.)
|
||||
|
||||
Unforunately as part of this, had to make youtube-dl and curl not be used
|
||||
by default. The annex.security.allowed-http-addresses config has to be
|
||||
opened up by the user in order to use those external commands, since they
|
||||
can follow arbitrary redirects.
|
||||
|
||||
Also thought some more about how external special remotes might be
|
||||
affected, and sent their authors' a heads-up.
|
||||
|
||||
[[!meta date="June 17 2018 4:00 pm"]]
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue