A public letter to CloudFlare to fix their snoopy vendor
github.com
github.com
edit: I realize there are plenty users behind NAT64 gateways etc, that's the point: how many users out there have no IPv4 connectivity at all?
Edit: was totally wrong about this: https://www.internetsociety.org/resources/deploy360/2014/cas...
iOS (since IOS 12) and Android have native clients that can tunnel IPv4 requests over an IPv6 only network that are used for providers like T-Mobile.
T-Mobile could respond to DNS requests with an IPv6 address that includes an encoding of Amazon.com's IPv4 address in it so that when you try to connect it it, the gateway knows what IP address you're looking for and can do the NATing there.
Of course, this is just conjecture about a possible way of making it work, and it could easily get broken if you configure your phone to use a different DNS server.
ipv6+nat64
Why is this hard to believe?
IPv4 ran out a while ago depending on which part of the world you are in. New networks do no longer get IPv4 by default. Some can get very small allocations that are barely enough to operate nat64 gateways for a few thousand users. Quite a few networks decided to not invest in legacy IP any more and better spend their (limited) resources on other activities.
> Who are these people?
me + non 1st-world countries.
CF should have just rolled their own captcha service instead of buying into someone else's public ML training program again.
1. No SSL: User <--HTTP--> Cloudflare <--HTTP--> Origin Server
2. Flexible SSL: User <--HTTPS--> Cloudflare <--HTTP--> Origin Server
3. Full SSL: User <--HTTPS--> Cloudflare <--HTTPS--> Origin Server; Self-signed cert ok, expired cert ok
4. Full SSL (strict): User <--HTTPS--> Cloudflare <--HTTPS--> Origin Server; Origin server must use an SSL certificate that Cloudflare provides [1]
5. Strict (SSL-Only Origin Pull): User <--HTTPS--> Cloudflare <--HTTPS--> Origin Server; same as Full SSL (strict), but you pay need to pay Cloudflare more money
---
3 and above will fix this issue as they encrypt from Cloudflare to the Origin Server.
This is the traffic flow from the link:
User -> Cloudflare -> Airtel -> GitHub Pages
Where the connection with flexible SSL is Cloudflare <--HTTP--> GitHub Pages.
Upgrading to Full SSL (or higher) and using HTTPS on GitHub [2] should fix.
---
Alternatively, deploy your static website with Cloudflare Pages [3], which has feature parity with Github Pages.
The flow would then be: User <--HTTPS--> Cloudflare Pages
[0]: https://developers.cloudflare.com/ssl/origin-configuration/s...
[1]: https://developers.cloudflare.com/ssl/origin-configuration/o...
[2]: https://docs.github.com/en/pages/getting-started-with-github...
[3]: https://pages.cloudflare.com/
EDIT: The replies by kentonv, x1110dc, and r1ch all have valid points.
The difference in this mode is that even if the client connects to Cloudflare using HTTP, Cloudflare will connect to the origin using HTTPS. In all other modes, if the client connects by HTTP, then Cloudflare will connect to origin by HTTP.
Of course, most people these days enable "HTTPS only", in which case Cloudflare will redirect HTTP clients to HTTPS and therefore not make any connection to the origin at all for HTTP clients.
*example.com/.well-known/acme-challenge/*
Disable Security, SSL: Off, Cache Level: Bypass, Automatic HTTPS Rewrites: Off
and one big gotcha: Under SSL/TLS -> Edge Certificates -> disable Always Use HTTPS
(assuming you are using the HTTP-01 challenge).I happened to be recently looking at putting cloudflare in front of an S3 bucket, and it looked maybe easier/more feasible to do with `Full` instead of `Full (Strict)` -- because you can skip configuring the S3 bucket have an SSL cert for your actual front-facing domain (which can be cumbersome and/or more expensive to set up) and just let CloudFlare connect to it as `*.s3.aws.com` or whatever. As long as CloudFlare is actually requiring a trusted cert for *.s3.aws.com, are there security implications I'm missing for why this is a bad idea? (I guess AWS or someone with the keys to AWS certs could be spoofing you? Anything else?)
Or in general even without reference to this use case, explain vulnerability examples/threat models for `Full` without `Strict`?
There's plenty of examples of ISPs trying this in the wild: https://www.zdnet.com/article/kazakhstan-government-is-now-i... https://www.reddit.com/r/sysadmin/comments/4vy3op/my_isp_is_... https://superuser.com/questions/176651/isp-replaces-ssl-cert...
Why don't they have a mode that checks that the cert is valid for hostname that you have configured cloudflare to access (which *.s3.amazonaws.com already has), rather than for the end-point that the destination isn't actually answering on directly itself? Or maybe I'm misunderstanding what was up, have to mess with it more.
https://developers.cloudflare.com/ssl/origin-configuration/o...
If you mean can you present it for general access by people on the Internet, no, not really, because the certificate aren't trusted, you would need a proxy layer.
A user must knowingly choose this option, and many websites which picked Flexible SSL could easily be upgraded to Strict SSL today. CloudFlare must work towards upgrading these users, especially where it can easily identify that SSL is supported at the origin server (such as Shopify, GitHub etc).
This is why I think flexible SSL is worse than no SSL. Cloudflare's own docs used to say Flexible SSL "should only be used as a last resort if you are not able to setup SSL on your own web server, but it is less secure than any other option (even “Off”)" (this has since been removed).
You never do. SSL is not sufficient for security. It protects against a single attack vector, that's if it's set up correctly. For all you know, the set up of the server your visiting might have be old enough to have a driver's license, with public SSH and the root password "12345".
As such, I've just dropped the column.
Do these ISPs limit themselves to court-ordered blocks in your case?
Posted this[0] months ago, even sent emails to Cloudflare NOC multiple times and nobody did even care.
[0] https://community.cloudflare.com/t/censored-pop-orpheus-not-...
By terminating at the edge it enables many useful features of services such as CloudFlare that would otherwise not be possible such as the “web application firewall”.
If you think of CloudFlare as a hosting provider in the same way as any other (which they are) it ridiculous not to trust them terminating TLS.
I'm just frustrated by the bandwagoning criticism of any use of CloudFlare and the suggestion anyone using them is MITM their own visitors, when clearly they are just another part of your own infrastructure (when used correctly). Your comment "TLS termination on the edge services is just stupid" made me think you were doing that.
> Enabling SSL/TLS between Cloudflare and the origin site is a customer decision. When this protection is not enabled, as is the case here, an ISP can manipulate the requests before they reach Cloudflare. If this behaviour is not desired, the customer must change the settings for the site in the Cloudflare dashboard.
The request in question gets MITMed after it reaches Cloudflare edge servers, the connection between browser and the edge server happens over SSL
It’s good to see others experience the downside of centralising the internet. Until reading this, it seemed like everyone blindly loves cloudflare.
Airtel support is here https://www.airtel.in/contact-us
Also, vote with your wallet and don't use Airtel ?
The snooping intermediary (Airtel) in this scenario is one that has a commercial relationship with CloudFlare and powers CloudFlare's network.
CloudFlare has been aware of this issue for years, but it hasn't done anything to get its vendor to fix their network.
https://en.wikipedia.org/wiki/Internet_censorship_in_India
I don't see how Cloudflare or any other provider can make Airtel "fix" the snooping when Airtel is forced by law to block those sites.
This seems to be a policy/government problem, not a Cloudflare or Airtel problem.
Airtel isn’t forced to block these sites. It is blocking these because of a mis-configuration somewhere.
More broadly, if enabling a particular Cloudflare feature (in this case, Flexible SSL) constitutes "misusing Cloudflare", then Cloudflare should simply not offer that feature at all. There's a bit of a balance here; when they introduced it in 2011, a lot of hosts didn't offer HTTPS at all and none of them offered it for free. MITM is genuinely more likely to happen between the end user and Cloudflare than between Cloudflare and the origin server (because the former can involve things like unsecured coffee-shop wifi), so for webmasters who couldn't use end-to-end HTTPS, it provided a real security benefit—which had to be weighed against the cost of telling end users that their connection to the site is secure against interception, when that wasn't entirely true.
I think there's a case to be made that this tradeoff was worth it in 2011 but is not worth it in 2022; today, end-to-end HTTPS can be had for free, and is easy enough that there's usually no excuse not to.
To fix this, an Indian user must actively avoid Cloudflare POPs, which is a bad proposition. Also, it shouldn’t be up to end-users of Neovim to fix what is CF/Airtel’s fault.
GitHub Pages originally didn't support SSL on custom domains, so people would often put Cloudflare in front of it.
Now GHP does support SSL on custom domains, so Cloudflare is no longer needed, but obviously a lot of sites still exist with the original setup.
I've done this myself and I'm fixing it now!
(Some JavaScript APIs I've experimented with over the years require HTTPS - from WebAuthn, which hey, fair enough - to Web MIDI, which hey, what the heck? https://developer.mozilla.org/en-US/docs/Web/Security/Secure... )
If the feature is something you could do with a polyfill anyway then it's not really a new feature, it usually makes no sense to restrict it. But something like Web MIDI you clearly can't build with a polyfill, so restricting that makes sense.
The reason to do this for new features is that by definition if your HTTP site already works, it didn't use them, if it relied on features that didn't exist it didn't work. So this prevents backsliding, your HTTPS site might stop working if you downgrade it to HTTP, but your 1997 HTTP site still works since obviously that doesn't use Web MIDI, or indeed probably CSS.
For a few features, vendors are going back and removing Insecure Context support, but this work is slow because inevitably even if it was a terrible idea people relied on it working (e.g. EME is used extensively from HTTP, because you know you really care that people can't pirate your mediocre training video, but you don't care enough to prevent them trivially intercepting it during download...)