-
Notifications
You must be signed in to change notification settings - Fork 54
Description
Issue
Several core architectural features of the Web Platform (in HTML, CSS, client-side JavaScript, etc) may be abused to allow heuristic detectability of assistive technology, conflicting with the Web Platform Design Principles.
Background
A recent cross-functional privacy review raised ARIA #1371 against aria-hidden
, citing that it may be abused to infer whether the user is running some form of AT. However, the core API used in the proof-of-concept demo is not aria-hidden
, but JavaScript event handling. The inclusion of aria-hidden
just makes it a little more difficult for an AT user to know something is amiss. See additional discussion in ARIA #1371.
The Privacy group asked ARIA WG to add prose in ARIA 1.3 noting the issue, and we've agreed to do so. However, this is a pervasive issue that affects HTML, CSS, client-side JavaScript and other core technologies of the Web Platform. I'd estimate there are at least dozens, if not hundreds, of heuristic ways to attempt AT detection, meaning many W3C Web technologies conflict with Web Platform Design Principle 2.7 Don’t reveal that assistive technologies are being used.
Many of the detection methods are fallible, but using a combination can result in a reasonable degree of certainty. Some methods may be resolved with bug fixes in rendering engines or AT. Others are more difficult. For example:
Example Methods Addressable by Web Engines or AT
- Event objects are notably different: some ATs consistently send x/y coordinates as 0,0 on a click event. Others aren't as rigid, but still send predictable coordinates. Introducing artificial x/y coordinate variance could negate this method.
- Event timings are different between AT and mainstream users. Sometimes AT-triggered event sequences (e.g. mousedown/mouseup) occur more quickly than is likely with a physical mouse or trackpad. Introducing artificial runloop delays could resolve this.
- Many more…
Example Methods Not as Easily Addressable
- The simplest method I'm aware of is:
<a href="/confirm_at" tabindex="-1" style="position: absolute; left: -9999px;">only AT users or bots will click this link</a>
Attempting to "resolve" this one may cause more harm than good. - AT usually simulates mouseup/mousedown/click sequences, but on desktop platforms, they don't simulate the mouse movement (mousemove) that would naturally occur between elements. Doing so to "resolve" this difference would likely have unintended consequences.
- Many more…
Potential Resolutions
Members of the Privacy Interest Group have suggested that these should be called out in every spec. For example, CSS position
(and other properties) would list that the property could be abused and therefore out of alignment with the the AT detection design principle. Likewise, many JavaScript events and event object properties would list something similar. There was a suggestion to include a watermark in BikeShed and ReSpec, similar to the BikeShed watermark for fingerprinting.
For the bugs that are addressable in browsers or AT, I think it's reasonable to call them out in the open. It will likely incentivize resolution, and spark additional research into related areas.
For the other issues that are not as easily addressable, I and others in the ARIA WG worry that, without a clear path forward, listing these will only serve to stoke fear in users, and/or act as a recipe for malicious actors, allowing them to create new or further refine existing detection methods. The counterpoint is that the open discussion will result in more heads considering how to address the problems. I'm not aware of precedent for a private list of accessibility issues, but the TAG could consider a model similar to security bug lists, or decide to address these in the open.
Given the scope is much broader than anything in the ARIA spec, the ARIA Working Group has asked me to file this issue for the TAG's consideration. We look forward to the discussion and eventual resolution. Thanks for your time.