Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Playout Statistics API for WebAudio 2025-01-31 > 2025-03-01 #154

Open
Hernqvist opened this issue Jan 31, 2025 · 2 comments
Open

Playout Statistics API for WebAudio 2025-01-31 > 2025-03-01 #154

Hernqvist opened this issue Jan 31, 2025 · 2 comments
Assignees
Labels
pending This issue needs to get a reviewer assigned to it REVIEW REQUESTED WD Working Draft. Not yet approaching Candidate Recommendation

Comments

@Hernqvist
Copy link

This proposal has passed early tag review, which requested that PING should take a look at it before moving to Audio WG. This is why the spec is not yet a TR.

Other comments: We are running an origin trial for this feature in Chrome, see https://chromestatus.com/feature/5172818344148992

@Hernqvist Hernqvist added pending This issue needs to get a reviewer assigned to it REVIEW REQUESTED WD Working Draft. Not yet approaching Candidate Recommendation labels Jan 31, 2025
@tomrittervg
Copy link

As a drive-by-comment not on behalf of the group, to me I can see a few different concerns:

  1. Is this a stable-ish source of fingerprinting entropy? i.e. Does a user consistently have a sufficiently stable performance for a particular input that it can be used as part of a fingerprint?
  2. This is a side channel exposing some information about the load of the computer, and we've seen a multitude of attacks that exploit that information.
  3. Tying in with the above, this can be used as a covert channel between two cooperating origins.

I'm not concerned about #3. #1 I am skeptical about but I also have no relevant experience with WebAudio that would give me an informed opinion.

With my Tor Browser hat on, I can say that the concern of #1 and #2 would most likely lead us to disable the API or hardcode it to return data that is not representative of actual performance as we did with the analogous video performance APIs.

@Hernqvist
Copy link
Author

Thank you for your concerns!

  1. We do not believe that it is a very good source of fingerprinting entropy, for the following reasons:
  • For most users the API will only return 0 glitches, because under normal conditions no glitches happen at all.
  • In order to use the API for fingerprinting, we would need to create a condition/input that causes glitches consistently. Since audio runs only on high-priority threads, this involves loading the system's CPU to 100%.
  • In our experiments, glitches from such a fingerprinting input is to some extent already detectable by JS in other ways, such as measuring the time between audio callbacks in ScriptProcessorNode or AudioWorkletProcessor.
  1. The API gives a binary signal about CPU load: either the system is under critical load to the point of causing audio glitches, or it isn't. The API does not show different data for 80% CPU load or 90% CPU load, because neither will cause glitches. So it's not good for measuring gradual CPU load.
    It could be conceived that an attacker would gradually increase CPU load until glitches occur, and estimate more fine-grained CPU load or capacity that way. As mentioned though, this is probably already possible using existing JS APIs.

  2. Yes, we have some discussion about the covert channel in the self-review here. Our conclusion is that it is impractical, and also already possible without this API.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
pending This issue needs to get a reviewer assigned to it REVIEW REQUESTED WD Working Draft. Not yet approaching Candidate Recommendation
Projects
None yet
Development

No branches or pull requests

3 participants