Back openDesk Edu for a sovereign, open-source education — every vote counts.
Vote nowA website you visit can now determine what other sites you have open – just by measuring how fast your SSD responds. No installation, no special permissions, just standard JavaScript. This is the essence of FROST (Fingerprinting Remotely using OPFS-based SSD Timing), a novel side-channel attack unveiled by researchers at Graz University of Technology at DIMVA 2026. FROST transforms subtle hardware timing variations into a powerful tool for behavioural graph reconstruction, redefining the landscape of browser privacy and security.
At its core, FROST leverages the Origin Private File System (OPFS) API, a relatively new W3C standard designed to give web applications a high-performance, private file system within the browser sandbox. While OPFS offers significant benefits for client-side storage, the Graz researchers identified a critical side-effect: its direct interaction with the underlying solid-state drive (SSD) exposes timing variations that can be measured with high precision.
The attack unfolds in several steps:
A key innovation enabling FROST is its ability to bypass the operating system's page cache. Modern OSes aggressively cache disk I/O to improve performance, which would typically obscure the direct SSD timing variations needed for a side-channel attack. FROST circumvents this by performing specific, rapid I/O sequences that force cache misses, ensuring that measurements reflect actual SSD response times. This allows for remarkably fast and accurate measurements from within the browser's JavaScript sandbox, without requiring any native code execution or elevated permissions.
The effectiveness of this covert channel is striking. Researchers demonstrated a covert channel capacity of 661.63 bit/s on Linux systems and an even higher 891.77 bit/s on macOS, showcasing its potential for exfiltrating significant amounts of information.
Here is a conceptual JavaScript snippet demonstrating the core timing measurement idea:
async function measureOpfsWriteTime(fileName, dataSize = 4096) {
const root = await navigator.storage.getDirectory();
const fileHandle = await root.getFileHandle(fileName, { create: true });
const writable = await fileHandle.createWritable();
const data = new Uint8Array(dataSize).fill(0xAA); // Example data
const startTime = performance.now();
await writable.write(data);
await writable.close();
const endTime = performance.now();
// Clean up
await root.removeEntry(fileName);
return endTime - startTime; // Time in milliseconds
}
// Example usage:
// (async () => {
// const writeTime = await measureOpfsWriteTime('temp_file_123.bin');
// console.log(`OPFS write took: ${writeTime.toFixed(2)} ms`);
// })();
The practical implications of FROST are considerable. The attack demonstrates high accuracy in fingerprinting user activity:
Where FROST truly innovates is in its "graph lens" approach to side-channel analysis. Every interaction with an SSD – whether it is loading a webpage, launching an application, or saving a document – leaves a temporal signature. Over time, these individual signatures can be aggregated to form a sophisticated behavioural graph.
In this graph:
The FROST attack effectively reconstructs this behavioural graph from the outside. By continuously monitoring SSD contention, an attacker can build a picture of how a user interacts with different digital entities. This allows for powerful inferences about user habits, interests, and even identity.
Consider a simplified scenario where an attacker monitors SSD activity over a period. They might observe the following co-occurrence patterns:
| Node A (Website/App) | Node B (Website/App) | Observed Co-occurrence | Inferred Relationship |
|---|---|---|---|
SocialMedia.com | NewsSite.org | High | User browses news while checking social media. |
DevIDE.app | Docs.io | Very High | Developer frequently consults documentation while coding. |
ShoppingSite.co.uk | PaymentGateway.com | Medium | User initiates purchases. |
SocialMedia.com | VideoStream.net | Low | Occasional background video playback during social browsing. |
WorkChat.app | Calendar.app | High | User manages schedule and communicates during work hours. |
From such observations, an attacker could infer a user's professional role (e.g., developer), personal interests (e.g., shopping habits), and daily routines. The graph becomes a rich source of metadata, far more revealing than isolated data points.
Addressing the FROST attack requires a multi-faceted approach, as it exploits fundamental aspects of hardware interaction and browser design:
FROST is not an isolated incident but rather the latest in a series of sophisticated browser-based side-channel attacks originating from Graz University of Technology. Previous notable attacks include:
io_uring API to perform more direct SSD timing measurements, though this required higher privileges than FROST.The trend is clear and concerning: each successive attack moves further into the browser's userland, requiring progressively fewer privileges. SnailLoad operated at the network level, Secret Spilling Drive needed a more privileged API, but FROST achieves its goals with standard JavaScript and the OPFS API, which is intended for general web use. This trajectory highlights a continuous erosion of the browser's security model, where the line between legitimate web functionality and privacy-invasive side-channels becomes increasingly blurred.
As knowledge graphs become central to understanding complex systems, the FROST attack demonstrates their potential for both defence and offence. By revealing how behavioural graphs can be inferred from seemingly innocuous side-channel data, it underscores the urgent need for more robust privacy protections in web browsers and operating systems alike. The battle for digital privacy is increasingly being fought at the micro-timing level, and a graph-theoretic understanding of these interactions will be crucial for both attackers and defenders in the years to come.