ma1 pushed to branch tor-browser-115.7.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits: cc050dd9 by hackademix at 2024-02-06T11:31:46+01:00 Bug 42397: change RFP-spoofed TZ to Atlantic/Reykjavik.
- - - - -
4 changed files:
- browser/components/resistfingerprinting/test/browser/browser_timezone.js - js/src/jit-test/tests/resist-fingerprinting/timezone.js - js/src/vm/DateTime.cpp - toolkit/components/resistfingerprinting/nsRFPService.cpp
Changes:
===================================== browser/components/resistfingerprinting/test/browser/browser_timezone.js ===================================== @@ -1,6 +1,7 @@ /** * Bug 1330890 - A test case for verifying Date() object of javascript will use - * UTC timezone after fingerprinting resistance is enabled. + * Atlantic/Reykjavik timezone (GMT and "real" equivalent to UTC) + * after fingerprinting resistance is enabled. */
async function verifySpoofed() { @@ -16,13 +17,15 @@ async function verifySpoofed() { // Running in content: function test() { let date = new Date(); + const TZ_NAME = "Atlantic/Reykjavik"; + const TZ_SUFFIX = "(Greenwich Mean Time)"; ok( - date.toString().endsWith("(Coordinated Universal Time)"), - "The date toString() is in UTC timezone." + date.toString().endsWith(TZ_SUFFIX), + `The date toString() is in ${TZ_NAME} timezone.` ); ok( - date.toTimeString().endsWith("(Coordinated Universal Time)"), - "The date toTimeString() is in UTC timezone." + date.toTimeString().endsWith(TZ_SUFFIX), + `The date toTimeString() is in ${TZ_NAME} timezone.` ); let dateTimeFormat = Intl.DateTimeFormat("en-US", { dateStyle: "full", @@ -30,12 +33,12 @@ async function verifySpoofed() { }); is( dateTimeFormat.resolvedOptions().timeZone, - "UTC", - "The Intl.DateTimeFormat is in UTC timezone." + TZ_NAME, + `The Intl.DateTimeFormat is in ${TZ_NAME} timezone.` ); ok( - dateTimeFormat.format(date).endsWith("Coordinated Universal Time"), - "The Intl.DateTimeFormat is formatting with the UTC timezone." + dateTimeFormat.format(date).endsWith(TZ_SUFFIX), + `The Intl.DateTimeFormat is formatting with the ${TZ_NAME} timezone.` ); is( date.getFullYear(),
===================================== js/src/jit-test/tests/resist-fingerprinting/timezone.js ===================================== @@ -2,7 +2,10 @@
let tzRE = /(([^)]+))/;
-// Make sure we aren't already running with UTC +const SPOOFED_TZ_NAME = "Atlantic/Reykjavik"; +const SPOOFED_TZ_GENERIC = "Greenwich Mean Time"; + +// Make sure we aren't already running with spoofed TZ let original = new Date(0); assertEq(tzRE.exec(original.toString())[1], "Pacific Standard Time");
@@ -16,8 +19,8 @@ assertEq(originalDT.resolvedOptions().timeZone, "PST8PDT"); let global = newGlobal({shouldResistFingerprinting: true});
let date = new global.Date(); -assertEq(tzRE.exec(date.toString())[1], "Coordinated Universal Time"); -assertEq(tzRE.exec(date.toTimeString())[1], "Coordinated Universal Time"); +assertEq(tzRE.exec(date.toString())[1], SPOOFED_TZ_GENERIC); +assertEq(tzRE.exec(date.toTimeString())[1], SPOOFED_TZ_GENERIC); assertEq(date.getFullYear(), date.getUTCFullYear()); assertEq(date.getMonth(), date.getUTCMonth()); assertEq(date.getDate(), date.getUTCDate()); @@ -29,5 +32,5 @@ let dt = global.Intl.DateTimeFormat("en-US", { dateStyle: "full", timeStyle: "full", }); -assertEq(dt.format(date).endsWith("Coordinated Universal Time"), true); -assertEq(dt.resolvedOptions().timeZone, "UTC"); +assertEq(dt.format(date).endsWith(SPOOFED_TZ_GENERIC), true); +assertEq(dt.resolvedOptions().timeZone, SPOOFED_TZ_NAME);
===================================== js/src/vm/DateTime.cpp ===================================== @@ -484,10 +484,11 @@ bool js::DateTimeInfo::internalTimeZoneDisplayName(char16_t* buf, size_t buflen,
mozilla::intl::TimeZone* js::DateTimeInfo::timeZone() { if (!timeZone_) { - // For resist finger printing mode we always use the UTC time zone. + // For resist finger printing mode we always use the Atlantic/Reykjavik time zone + // as a "real world" UTC equivalent. mozilla::Maybe<mozilla::Span<const char16_t>> timeZoneOverride; if (shouldResistFingerprinting_) { - timeZoneOverride = mozilla::Some(mozilla::MakeStringSpan(u"UTC")); + timeZoneOverride = mozilla::Some(mozilla::MakeStringSpan(u"Atlantic/Reykjavik")); }
auto timeZone = mozilla::intl::TimeZone::TryCreate(timeZoneOverride);
===================================== toolkit/components/resistfingerprinting/nsRFPService.cpp ===================================== @@ -227,7 +227,7 @@ void nsRFPService::UpdateRFPPref() { }
if (resistFingerprinting) { - PR_SetEnv("TZ=UTC"); + PR_SetEnv("TZ=Atlantic/Reykjavik"); } else if (sInitialized) { // We will not touch the TZ value if 'privacy.resistFingerprinting' is false // during the time of initialization.
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/cc050dd9...