First off, I think this supports our decision to have token authentication enabled by default, even though it's inconvenient in some situations. As I understand it, this should prevent DNS rebinding attacks from taking any action that requires authentication.
Second, the fix Tavis Ormandy suggested for Transmission is interesting:
"""
I discussed this with a jannh, I think a good solution would work like this:
* If a connection is over the loopback interface, the hostname must match "localhost",
"localhost.", "127.0.0.1", or "[::1]". This is the same list CUPS uses:
https://github.com/apple/cups/blob/master/scheduler/client.c#L3752
* If a connection is not over loopback, allow any hostname iff auth is enabled.
* If a connection is not over loopback and auth is not enabled, require the user to
create a whitelist of acceptable hostnames (They can specify * if they really
really don't want security).
"""
Should we look at employing hostname whitelisting in addition to authentication, either as an
extra line of defence or as a convenience for users on localhost?
My leaning would be to do it as an extra line of defence; given how complex browsers are and
the fact that Jupyter is designed to execute arbitrary code, defence in depth makes sense.
Thomas