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

Add proposed Cross-site covert channel attack description #219

Merged
merged 7 commits into from
Jun 13, 2023

Conversation

anssiko
Copy link
Member

@anssiko anssiko commented Jun 5, 2023

Update Acknowledgments with explicit thanks to Peter Snyder for this proposed attack and guidance on its mitigations.


Preview | Diff

index.html Outdated
that are not supposed to be allowed to communicate. In modern multi-process web engines in the generic
case each window or tab resides in its own process (documents that have the [=same origin=] or sites that
have the [=same site=] typically share the same process). Using this API it may be possible to create a
cross-site covert channel C where a site A on one tab first writes to the channel C after having
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure "write" is the right word, it is more like broadcasting

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 9e8cd0f

case each window or tab resides in its own process (documents that have the [=same origin=] or sites that
have the [=same site=] typically share the same process). Using this API it may be possible to create a
cross-site covert channel C where a site A on one tab first writes to the channel C after having
manipulated the state of the CPU. Next a site B (that is not same site with site A) on another tab reads
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

on another or even browser

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reads the broadcasted data?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto.

</p>
<div class="note">
The longer the scripts run the more information can be transmitted using the proposed cross-site covert channel.
For example, if a user is on a video conferencing site and another long-running site that allows for more
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On the other hand, something like an active video conferencing session will push the pressure on the CPU and make it much harder to manipulate in a predictive manner.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The same, addressed in 9e8cd0f

@anssiko anssiko requested a review from kenchris June 6, 2023 13:42
index.html Outdated
<p>
In a calibration process an attacker tries to manipulate the CPU so that this
API would report a transition into a certain pressure state in response to the
pressure exerted by the fabricated workload. By slightly changing at runtime
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe say that they will find to find the workload pressure that with the highest probability will result in a certain state?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 3cfdf72

index.html Outdated
pressure exerted by the fabricated workload. By slightly changing at runtime
the implementation-defined low-level hardware metrics that contribute to these
pressure state transitions this mitigation will slow down or prevent this
calibration process from succeeding.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

calibration will most likely succeed, but we want to invalidate the calibration at runtime, as you would need to be focused in order to reuse the Compute Pressure API to re-calibrate

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The same.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion:

Shuffling the sentence the other way around, would make it easier to understand.

"A mitigation solution can slow down or prevent this calibration process from succeeding (mentioning earlier the cause just described in the previous sentence), by slightly changing [...] these pressure state transitions."

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in a6c439d

pressure state transitions this mitigation will slow down or prevent this
calibration process from succeeding.
</p>
</section>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we might also want to mention this mitigation: Throttle compute execution of background web app

Browsers already do this in order to save power (sometimes after some time delay like say 5 minutes). Doing this will make it much harder to create workloads that results in certain states, and it might be impossible to reach upper states like "critical" - also the calibrated workloads would also be invalid

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed by f77bc3d

I think a note in the context of this mitigation makes sense since this is not specific to this API but a feature of browsers.

index.html Outdated
By slightly changing at runtime the implementation-defined low-level hardware
metrics that contribute to these pressure state transitions this mitigation will
slow down or prevent this calibration process from succeeding. Even if the
initial calibration would succeed its results will be invalidated at runtime
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

missing comma: "succeed, its"

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in a6c439d

Update Acknowledgments with explicit thanks to Peter Snyder
for this proposed attack and guidance on its mitigations.
Mitigates the proposed Cross-site covert channel attack
Add a note that mentions throttling
Adjust wording for improved clarity
@anssiko
Copy link
Member Author

anssiko commented Jun 13, 2023

Rebased the PR, ready for merging to establish a baseline.

Further improvements to be proposed in subsequent PRs.

@kenchris kenchris merged commit 9ad51d1 into main Jun 13, 2023
2 checks passed
@anssiko anssiko deleted the covert-channel branch June 13, 2023 08:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants