If that's the case, either (or both) of these features might be injecting JS into the page
Doesn't cloudflare also allow to upload and use own certificates for encryption between the client and the cloudflare server to not be forced to use theirs?
If that's the case, why doesn't bitcointalk use that option ?
It does but that's only useful if you don't want to use Cloudflare's SSL certificate for some other reason aside from encryption (e.g. you have one of those fancy SSL certificates with your company name). You uploading the certificate == you giving your SSL private keys to Cloudflare (if I'm not mistaken; I haven't used the service, just did some casual research in the past). For a fully-featured DDOS mitigation service to work, said service has to be able to look at the unencrypted request (both to check it against certain basic rules as well as to detect anomalies using various machine learning methods). The uploaded certificate merely changes the web request pipeline from:
(you)----encrypted connection
--->
(CF servers)---encrypted connection
---->
(Bitcointalk servers)to:
(you)----encrypted connection
--->
(CF servers)---encrypted connection
---->
(Bitcointalk servers)I've bolded the parts where the data being transferred (which in this case is the request to Bitcointalk's servers) is unencrypted
[1].
In a perfect (not-so-far-from-our-current-situation) world, everyone would have a DDOS-mitigation-in-a-box type of open-source application (which would be widely used and supported) as well as enough money to afford the hardware required to run it. In reality, AFAIK there is no free and open-source DDOS-mitigation-in-a-box application that'd be able to stand up to all the attacks that Cloudflare mitigates right out the box (alongside with it being constantly supported and updated to address new threats). And if you tack on the massive server costs on top of that, you can start to understand how despite the compromise in privacy, Cloudflare (and similar DDoS mitigation services) provide an amazing value proposition (especially for services less concerned with user privacy). It's either sink a ton of money and / or work and hope for the best (Bitcointalk tried this one and it worked.... till it didn't; DDoS mitigation is very much a perpetual arms race that few can keep up with once they reach a certain size), get DDoSed to hell and back (hey, you get the privacy benefits... by not being able to transmit any sort of data to the website) or use one of these services.
[...] or Bitcointalk getting compromised again.
Wouldn't it be retarded by an attacker to waste such a strong position (in case of found vulnerabilities etc.) just for some JS which is highly noticeable by asking for location?
And why would only one user get this notification.
Correct me if i am wrong, but i think that
this is not an indication for the system being compromised. Not at all.
I tend to follow the methodology of never ruling something (important) out until you're 99.9% sure that isn't the case - especially when a wrongful assumption can lead to catastrophic consequences. Hacking is (usually) messy and complicated. You usually don't just sit down and "hack something" - for highly secured systems it might take months of pushing and prodding till you figure out where and how the system is vulnerable. Some of that poking and prodding might leave traces. While I'm not saying that I'm fairly certain Bitcointalk was hacked again, I prefer to cover all my bases when talking about possible causes for an issue I have very little information about.
[1] - Do note that this is the most secure configuration as encrypting the part of the pipeline is optional for your browser to consider the connection as "secure". It sort of is (as in it's much more likely and dangerous letting randoms intercept your request (and response) data while you beam it over your coffee shop's WiFi) but if you don't or don't want to trust the people / companies managing the infrastructure between Cloudflare and your hosting company, the high-level configuration shown in the makeshift graph is what you should use (and what I assume Bitcointalk uses).