[tor-commits] [Git][tpo/applications/mullvad-browser][mullvad-browser-115.7.0esr-13.5-1] Bug 42397: change RFP-spoofed TZ to Atlantic/Reykjavik.

ma1 (@ma1) git at gitlab.torproject.org
Tue Feb 6 10:49:56 UTC 2024



ma1 pushed to branch mullvad-browser-115.7.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser


Commits:
a007d208 by hackademix at 2024-02-06T11:49:08+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/mullvad-browser/-/commit/a007d208613720c4dd98aa400cfe3bb4d7ec1bdb

-- 
View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/a007d208613720c4dd98aa400cfe3bb4d7ec1bdb
You're receiving this email because of your account on gitlab.torproject.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.torproject.org/pipermail/tor-commits/attachments/20240206/fc7a499e/attachment-0001.htm>


More information about the tor-commits mailing list