-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
whatsapp: better web-interface measurements #740
Labels
Milestone
Comments
bassosimone
added a commit
that referenced
this issue
Jun 30, 2020
As mentioned in the commit, we see a 400 Bad Request error from WhatsApp when using the User-Agent we use for measurements along with the standard Golang's ClientHello fingerprint. This looks like MITM detection like https://mitm.watch to me. A fix for this issue could be to find out a combination of User-Agent and ClientHello that does not trigger 400 and keep the test as it should according to the spec. Yet, if there is MITM detection, it may change. This will likely cause future false positives, and we already have a bunch of such false positives for the IM tests. Also, it currently seems safe to assume that, if we can perform a TLS handshake with a certificate pool we trust, then we are talking with WhatsApp. Therefore, the status code and the returned web page matter much less than they did when we wrote the initial implementation of the WhatsApp experiment. What's more, because the HTTP request only redirects us, we should probably also simplify that check, to avoid asserting anything on the returned web page _if_ we're correctly redirected. How to properly do this will be researched in the next sprint as part of #740. Further investigating this issue should also be fun. This work is part of #55.
bassosimone
added a commit
that referenced
this issue
Jun 30, 2020
* whatsapp: implement remaining checks As mentioned in the commit, we see a 400 Bad Request error from WhatsApp when using the User-Agent we use for measurements along with the standard Golang's ClientHello fingerprint. This looks like MITM detection like https://mitm.watch to me. A fix for this issue could be to find out a combination of User-Agent and ClientHello that does not trigger 400 and keep the test as it should according to the spec. Yet, if there is MITM detection, it may change. This will likely cause future false positives, and we already have a bunch of such false positives for the IM tests. Also, it currently seems safe to assume that, if we can perform a TLS handshake with a certificate pool we trust, then we are talking with WhatsApp. Therefore, the status code and the returned web page matter much less than they did when we wrote the initial implementation of the WhatsApp experiment. What's more, because the HTTP request only redirects us, we should probably also simplify that check, to avoid asserting anything on the returned web page _if_ we're correctly redirected. How to properly do this will be researched in the next sprint as part of #740. Further investigating this issue should also be fun. This work is part of #55. * whatsapp.go: mention the pull request with extended rationale Part of #55
bassosimone
added
effort/S
Small effort
priority/high
High priority
discuss
We need to have a conversation
effort/M
Medium effort
and removed
effort/S
Small effort
labels
Jul 2, 2020
Discussed and approved this plan with @hellais |
bassosimone
added a commit
that referenced
this issue
Jul 9, 2020
bassosimone
added a commit
that referenced
this issue
Jul 9, 2020
bassosimone
added a commit
that referenced
this issue
Jul 9, 2020
bassosimone
added a commit
that referenced
this issue
Jul 9, 2020
See failing test https://github.com/ooni/probe-engine/pull/751/checks?check_run_id=853562310 Spotted as part of #740
bassosimone
added a commit
that referenced
this issue
Jul 9, 2020
See failing test https://github.com/ooni/probe-engine/pull/751/checks?check_run_id=853562310 Spotted as part of #740
bassosimone
added a commit
that referenced
this issue
Jul 9, 2020
See failing test https://github.com/ooni/probe-engine/pull/751/checks?check_run_id=853562310 Spotted as part of #740
bassosimone
added a commit
to ooni/spec
that referenced
this issue
Jul 9, 2020
Specifically, say that WhatsApp web is reachable over HTTPS regardless of the HTTP status code and that over HTTP we're happy if we get a redirect to the correct location. This is part of ooni/probe-engine#740. While there, remove the all endpoints option. We should test all the endpoints to make a better statement on whether it's blocked. (A single endpoint down is, in fact, a false positive.) While there, explicitly say that the CIDR check is gone for good, since it has not been working for quite some time now. While there, mention all the parent data formats and specify the toplevel structure in a more strict way.
bassosimone
added a commit
to ooni/spec
that referenced
this issue
Jul 9, 2020
Specifically, say that WhatsApp web is reachable over HTTPS regardless of the HTTP status code and that over HTTP we're happy if we get a redirect to the correct location. This is part of ooni/probe-engine#740. While there, remove the all endpoints option. We should test all the endpoints to make a better statement on whether it's blocked. (A single endpoint down is, in fact, a false positive.) While there, explicitly say that the CIDR check is gone for good, since it has not been working for quite some time now. While there, mention all the parent data formats and specify the toplevel structure in a more strict way.
bassosimone
added a commit
to ooni/spec
that referenced
this issue
Jul 9, 2020
While at it, fix JSON formatting. Part of ooni/probe-engine#740
bassosimone
added a commit
to ooni/spec
that referenced
this issue
Jul 9, 2020
While at it, fix JSON formatting. Part of ooni/probe-engine#740
bassosimone
changed the title
telegram, whatsapp: better web interface measurements
whatsapp: better web-interface measurements
Jul 9, 2020
Turns out there is nothing to be done on the Telegram side, because we get a 200 OK for HTTP. It may be that we need to change the experiment in the future, but for now it seems we're good. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
We should consider redesigning these tests in light of the fact that we typically access the web interface using HTTPS also when we attempt with HTTP, because of 301 redirection. For this reason, there is opportunity to simplify the algorithms we use and make sure we reduce the rate of false positives we currently see.
This is what I am proposing:
the
http
check is good if we get a redirection for the right domain (rationale: we don't need to care about the web interface being served overhttp
since now we always see a redirection)the
https
check is good if we handshake and get a response regardless of the response code (rationale: with the correlation between the ClientHello and the User-Agent we may be flagged as MITM)There is also issue #229 that discusses ways in which we can better avoid being flagged as MITM by using a custom ClientHello, but that work will require more time to converge and, in the meantime, I think the two above changes make our tests more robust.
The text was updated successfully, but these errors were encountered: