Note that phishing attacks are out of scope
In this section we highlight various fields in JavaScript that an attacker can use to transmit information. We distinguish between immediate channels where modifying this fields sends information to an attacker and delayed channels were no information is sent to the attacker until the user performs some action.
For storage channels data is not directly transmitted to an outside source. However, any security labels need to be persisted along with the data or these need to be treated like delayed channels.
For confidentiality, we assume that each origin may be its own security principal. We note that 'http://ucsc.edu' and 'http://soe.ucsc.edu' are different principals, as are 'http://ucsc.edu' and 'https://ucsc.edu'. In addition we have a LOCAL_ONLY principal for data that should never leave the client.
In order to safely handle exfiltration attacks, we will also need a notion of integrity. For all data, we will need to track which principals have influenced the data. (Note that without declassification, the moment that more than one principal have affected any confidential data item, it becomes LOCAL_ONLY).
Since XHR can be used to pull sensitive data from different pages we need to handle its results with some care.
In this section we discuss a possible approach to limit a scripts access to the DOM.
Exfiltration attacks present a significant threat to confidentiality for information flow analysis. In short, exfiltration attacks involve sending confidential information back to its origin, but to another account. (For example, an attacker might send someone else's confidential information from Facebook back to his own Facebook account).
In order to defend against these attacks, we will need to add a notion of integrity. Confidential data can only be sent back to its origin if the decision to do so was not influenced by any other principal. (This solution is one proposed for safe declassification).
We note that cross-site loading tags (e.g. image tags) might not require this restriction, since it does not seem likely that a site would use these tags to pass information between accounts.