ooni / explorer

OONI Explorer: uncover evidence of internet censorship worldwide
https://explorer.ooni.org
BSD 3-Clause "New" or "Revised" License
63 stars 37 forks source link

Filter out test results from old probe-engine versions #905

Open cohosh opened 9 months ago

cohosh commented 9 months ago

Describe the bug

After looking into some reports of DTLS fingerprinting in Russia, I noticed that all of the recent failed anomalies I checked were failing because they were running an old version of the probe-engine that did not have a fingerprinting fix we introduced in February of last year.

To analyze issues like fingerprinting, where fixes are introduced in response to blocking events, it would be really useful to be able to filter out the results from clients that have not yet updated to the new version of OONI probe so that we can tell whether anomalies are due to new fingerprinting rules. This should also be optional, since the fingerprint fixes we care about will vary from region to region.

I realize this is probably a pretty significant feature request. It's not urgent, just something that would be nice when looking at blocking results in aggregate.

To Reproduce

Look at anomalous Tor Snowflake Test results from Russia:

https://explorer.ooni.org/chart/mat?test_name=torsf&axis_x=measurement_start_day&since=2023-07-01&until=2023-09-12&time_grain=day&probe_cc=RU&probe_asn=AS51645

Expected behavior

Filter option to only display test results from newer versions of the probe-engine.

Screenshots

image image

These both look like blocking events, but are most likely the result of an old blocking rule that we've already circumvented being removed and then re-added. It's hard to tell from the aggregate results whether we should be looking for a fix.

bassosimone commented 9 months ago

We should already have an API for this, thanks to https://github.com/ooni/backend/commit/3b1902c3df4be510e258b399c8c4ff01d670383f. In light of this, it seems this is mostly a feature request for the measurement aggregation toolkit at OONI Explorer. That said, I think it would also be possible (and likely desirable) to expose and extract the version of snowflake that we're using. Is https://pkg.go.dev/git.torproject.org/pluggable-transports/snowflake.git/v2@v2.5.1/common/version#GetVersion the proper function to get this value? (Also, FYI, the repository changed to gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake and the latest version seems to be v2.6.2, and a release is upcoming, but I could not find the new repository name in pkg.go.dev—entering the new name got me redirected to the old one—and, for some reason, pkg.go.dev thinks the latest version is v2.5.1—all of this is a bit unexpected.)

cohosh commented 9 months ago

We should already have an API for this, thanks to https://github.com/ooni/backend/commit/3b1902c3df4be510e258b399c8c4ff01d670383f. In light of this, it seems this is mostly a feature request for the measurement aggregation toolkit at OONI Explorer.

Ah cool, I missed that change. In that case, yes this is mostly a feature request for the MAT.

That said, I think it would also be possible (and likely desirable) to expose and extract the version of snowflake that we're using. Is https://pkg.go.dev/git.torproject.org/pluggable-transports/snowflake.git/v2@v2.5.1/common/version#GetVersion the proper function to get this value?

That's correct.

(Also, FYI, the repository changed to gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake and the latest version seems to be v2.6.2, and a release is upcoming, but I could not find the new repository name in pkg.go.dev—entering the new name got me redirected to the old one—and, for some reason, pkg.go.dev thinks the latest version is v2.5.1—all of this is a bit unexpected.)

Sorry about that, we've been deprecating our old gitweb repositories and moving to only hosting on GitLab. The new Go docs are at https://pkg.go.dev/gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2

The latest version is 2.6.0, but once https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/merge_requests/174 is merged, it will be 2.6.1.