|Confidentiality Directive (CSP)|
|Product manager||Sid Stamm|
|Directly Responsible Individual||Devdatta Akhawe|
|Lead engineer||Devdatta Akhawe|
|Product marketing lead||`|
Stage 1: Definition
1. Feature overview
Data confinement is a fundamental security primitive unavailable on the web platform today. Applications handling sensitive data currently do not have any mitigation against data exfiltration attacks. The adoption of CSP and primitives like sandbox promise a world with robust defenses against code injection attacks; but no guarantees against data exfiltration attacks.
2. Users & use cases
"One of the most rudimentary goals of a successful XSS attack is the extraction of user-specific secrets from the vulnerable application. Historically, XSS exploits sought to obtain HTTP cookies associated with the authenticated user session; these tokens - a form of ambient authority - could be later replayed by the attacker to remotely impersonate the victim within the targeted site. The introduction of httponly cookies greatly limited this possibility - and prompted rogue parties to pursue finer-grained approaches."
This would, in particular, be really useful in scenarios where sensitive tokens are present in the document. A successful HTML injection can possibly exfiltrate these tokens. For example, exfiltration of a BrowserID URL to login compromises correctness, exfiltration of a unique identifier of the user compromises privacy and so on.
Another important use case is data vaults: Google Docs, Password Managers (e.g., LastPass), phpMyAdmin are all examples of web applications that handle sensitive data, where content exfiltration attacks might be dangerous. An injection vulnerability in Google Docs can exfiltrate sensitive docs; a injection vulnerability in phpMyAdmin can allow exfiltrate SQL databases; and exfiltration of data from password managers would be really bad.
Even if an attacker achieves code injection, she should not be able to exfiltrate any data to an origin other than the ones in the whiltelist, save for the non-goals listed below.
Stage 2: Design
5. Functional specification
We propose addition of a CSP directive 'confidentiality' which has a whitelist of origins to which a frame is allowed to leak data.
All network requests caused by the document will be interposed on, and would be allowed through only if the target URI is in the whitelist of origins.
The current plan is to disable all data: URI iframe/worker loads as soon as a confidentiality primitive is present.
One concern is to take care of all possible corner cases. For example, the document might modify window.history and the user's clicking back might leak data.
6. User experience design
Stage 3: Planning
7. Implementation plan
Quality Assurance review
Stage 4: Development
Stage 5: Release
10. Landing criteria
|Theme / Goal||Experience / Connect|
Team status notes