Skip to content

ToDo: followsups / extras / ideas #3 #169

@Thorin-Oakenpants

Description

@Thorin-Oakenpants

🔹 Pages I use to keep tabs on a few things


🟥 ToDo

🟩 perf

  • ongoing: reduce fonts in list(s) - see #34

🟩 isVars

  • harden isFF with items from isEngine, and thus isEngine for gecko/goanna
  • replace isEngine math (for non-gecko/goanna)
  • harden isOS
  • harden navKeys with knownGood, knownPoison from isEngine

🟩 general: fingerprints, sections, lies

  • general: add overlay popup to show results for each section and overall
  • general: add a user-initiated i.e [click here]'s global FP
    • reset each gRun
    • update or add each metric when a metric is run
  • handle passing objects as well as arrays
  • don't use .join()
    • don't use .join() on arrays for all sDetail data (where we can now use objects or arrays)
    • don't use .join() anywhere else unless we have to (or it is safe)
  • preserve typeof where possible
    * e.g. screen metric width/height is a joined string but we already test for NaN
  • general: ongoing
    • knownLies (from mathematical proofs etc)
    • apply prototypeLies to metrics
    • logic -> check knownLies -> if no lies then check prototypeLie -> into the section hash data -> into overall hash data
  • general: ongoing
    • robust error handling, detection of script blockage: e.g. screen.js needs work

🟦 screen

🟦 ua

  • WorkerNavigator
  • ua: refactor
    • always return 11 results
    • relax oscpu for specific linux distro strings
    • harden oscpu: win7 vs win8/10 via tiny font check
    • harden userAgent from the other parts: i.e userAgent is constructed using a set method
    • bypass more parts of the userAgent than just version where possible
    • only bypass the six "hardcoded" parts - we always detect without proxyLies
    • don't try to bypass the variable FF strings because that may indeed be the string, e.g forks, special user builds, useragent-override pref(s) ... only detect untrustworthy via proxyLies

🟦 feature detection

  • feature detection: new math test for android if isVer is FF68+
    • moved to misc, split into RFP vs other, extended tests to cover android entropy

🟦 language

🟦 storage

  • storage: auto-output estimate as it doesn't need permission
  • storage: finish the tests

🟦 devices

🟦 svg

  • svg: such as
    • ExtentOfChar
    • SVGTextContentElement.prototype.getComputedTextLength
    • SVGPathElement.prototype.getTotalLength
    • SVGGeometryElement.getPointAtLength()

🟦 canvas

🟦 webgl

  • webgl: add properties/parameters: split into 1, 2, experimental groups and subgroups e.g. affected by RFP/prefs
  • webgl: add image tests
    • make sure to expand/test on error entropy for readPixels
    • e.g. in VM's which usually block the graphics driver and the error messages can differ
    • make sure error entropy is handled for TB slider and VMs

🟦 audio

🟦 fonts

  • fonts: add domrect methods (bounding, bounding range, client, client range)
    • and use this (if trustworthy) for sizes (more precision)
  • fonts: graphite: use base64
  • fonts: transform - on domrect
  • fonts: fontFace: enumerate some weighted fonts, check RFP/TB leaks
  • fonts: max sizes
  • fonts: add system-ui to tests 1226042
  • fonts: update lists
    • windows up to 11
    • mac up to macOS 15
      • now 10.15 is the minimum in ESR128+ we can also clean out some old crap
    • android updated with moz telemetry data
    • linux: load some VMs and pick the eyes out
  • fonts: add more enumeration methods (maybe via [click here])
    • font face (we already have a smaller test for weighted fonts + leaks)
    • offscreenCanvas (we already a smaller test for leaks)
    • svg
  • unicode support + FP based on code points assigned per script/version
  • emoji support + FP
  • textMetrics: offscreenCanvas
  • textMetrics: randomness

🟦 media

🟦 css

  • css: prefers-contrast notation - tests, article
  • css: detect changes to expected values (e.g. dark readers)
    • e.g. window.getComputedStyle(document.getElementsByTagName("body")[0]).backgroundColor

🟦 elements

🟦 timing

  • timing: yay!

🟦 misc


🟫 BACKBURNER

  • fonts: can we do anything with zalgo
  • general: make worker fingerprint global
    • waste of time until we start adding lots of worker tests
    • currently there is only the ua and language sections, results are not used anywhere
    • instead all worker data should be a separate global FP which we use after the fact to report lies
      • i.e we still output a sub-section worker hash (and diffs to doc), but report lies/mismatches in global
  • general: make iframes fingerprint global (same deal as workers above)
  • language: injecting resource:// css files for app lang leaks
  • other: WebRTC
  • other: isAdBlocking [also: hash of results]
  • other: sanitizing / zombie storage - prototype
  • screen: android: exploit font inflation
  • screen: mod border-snapping subPixel devicePixelRatio PoC to use clientrect for more precision

...

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions