Security/Features: Difference between revisions
No edit summary |
|||
(17 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
This page | {{warning|This page is no longer maintained. Please see [[SecurityEngineering/Roadmap]] for current projects}} | ||
This page once listed the security features under development and our plans for deployment. | |||
= Status Overview = | = Status Overview = | ||
Line 11: | Line 13: | ||
<th> Prototype </th> | <th> Prototype </th> | ||
<th> Implementation </th> | <th> Implementation </th> | ||
<th> Version Target </th> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
Line 19: | Line 22: | ||
<td style='background-color:#fcc;'>Not Started </td> | <td style='background-color:#fcc;'>Not Started </td> | ||
<td style='background-color:#fcc;'>Not Started</td> | <td style='background-color:#fcc;'>Not Started</td> | ||
<td style='background-color:#fcc;'> </td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
Line 27: | Line 31: | ||
<td style='background-color:#cfc;'> Done (8/2008)</td> | <td style='background-color:#cfc;'> Done (8/2008)</td> | ||
<td style='background-color:#cfc;'> [http://hg.mozilla.org/mozilla-central/rev/7229621a1886 Done] (3/2010)</td> | <td style='background-color:#cfc;'> [http://hg.mozilla.org/mozilla-central/rev/7229621a1886 Done] (3/2010)</td> | ||
<td style='background-color:#cfc;'> 4.0 </td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
Line 32: | Line 37: | ||
<td style='background-color:#cfc;'> Done (Q2 2009)</td> | <td style='background-color:#cfc;'> Done (Q2 2009)</td> | ||
<td style='background-color:#ffc;'> In Progress</td> | <td style='background-color:#ffc;'> In Progress</td> | ||
<td style='background-color:#ffc;'> In Progress</td> | <td style='background-color:#ffc;'> [http://tools.ietf.org/html/draft-hodges-strict-transport-sec In Progress]</td> | ||
<td style='background-color:#cfc;'> Done ( | <td style='background-color:#cfc;'> Done (8/2010)</td> | ||
<td style='background-color:# | <td style='background-color:#cfc;'> [http://hg.mozilla.org/mozilla-central/rev/5dc3c2d2dd4f Done] (8/2009)</td> | ||
<td style='background-color:#cfc;'> 4.0 </td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
Line 43: | Line 49: | ||
<td style='background-color:#eee;'> n/a </td> | <td style='background-color:#eee;'> n/a </td> | ||
<td style='background-color:#ffc;'> In Progress</td> | <td style='background-color:#ffc;'> In Progress</td> | ||
<td style='background-color:#ffc;'> ? </td> | |||
</tr> | </tr> | ||
<tr> | <tr> | ||
Line 50: | Line 57: | ||
<td style='background-color:#cfc;'> Done (Previous)</td> | <td style='background-color:#cfc;'> Done (Previous)</td> | ||
<td style='background-color:#eee;'> n/a </td> | <td style='background-color:#eee;'> n/a </td> | ||
<td style='background-color:#ffc;'> | <td style='background-color:#cfc;'> [https://bugzilla.mozilla.org/show_bug.cgi?id=475530 Done]</td> | ||
<td style='background-color:#cfc;'> 4.0 </td> | |||
</tr> | |||
<tr> | |||
<td style='background-color:;'> [[Security/Features/Content Hashing|Content Hashing]]</td> | |||
<td style='background-color:#ffc;'> in progress</td> | |||
<td style='background-color:#ffc;'> in progress </td> | |||
<td style='background-color:#fcc;'> tbd </td> | |||
<td style='background-color:#fcc;'> tbd </td> | |||
<td style='background-color:#fcc;'> tbd </td> | |||
<td style='background-color:#fcc;'> ? </td> | |||
</tr> | |||
<tr> | |||
<td style='background-color:;'> [[Security/Features/XSS Filter|XSS Filter]]</td> | |||
<td style='background-color:#ffc;'> in progress</td> | |||
<td style='background-color:#ffc;'> in progress </td> | |||
<td style='background-color:#fcc;'> tbd </td> | |||
<td style='background-color:#fcc;'> tbd </td> | |||
<td style='background-color:#fcc;'> tbd </td> | |||
<td style='background-color:#fcc;'> ? </td> | |||
</tr> | </tr> | ||
</table> | </table> | ||
= Projects = | = Projects = | ||
This is intended to summarize the status and basic goals of each project, and not serve as an ultimate authority on each of the features. | This is intended to summarize the status and basic goals of each project, and not serve as an ultimate authority on each of the features. | ||
SEE ALSO: [[Privacy/Features/]] | |||
== Origin Header / Sec-From == | == Origin Header / Sec-From == | ||
Beginning as an [[Security/Origin]] header that aimed to prevent clickjacking as well as CSRF and JSON data theft, this feature has evolved into [[Security/Sec-From]] that will not prevent clickjacking, but can be compatible with various other specifications for similar HTTP request headers. | Beginning as an [[Security/Origin]] header that aimed to prevent clickjacking as well as CSRF and JSON data theft, this feature has evolved into [[Security/Sec-From]] that will not prevent clickjacking, but can be compatible with various other specifications for similar HTTP request headers. | ||
Line 190: | Line 220: | ||
Tasks: | Tasks: | ||
* {{ok|IETF | * {{ok|[http://tools.ietf.org/html/draft-hodges-strict-transport-sec IETF]}} | ||
* {{ok|W3C?}} (Currently submitted here by Paypal) | * <s>{{ok|W3C?}} (Currently submitted here by Paypal)</s> | ||
'''Prototype''': Done. (6/2009) | '''Prototype''': Done. (6/2009) | ||
Line 202: | Line 232: | ||
* {{done|submit to AMO for screening and public dissemination}} | * {{done|submit to AMO for screening and public dissemination}} | ||
'''Implementation''': | '''Implementation''': Done. (8/2010) | ||
Tasks: | Tasks: | ||
* {{done|convert prototype to C++}} -- partially in JS, see {{bug|495115}} | * {{done|convert prototype to C++}} -- partially in JS, see {{bug|495115}} | ||
* {{done|pick optimal location to scan for header}} | * {{done|pick optimal location to scan for header}} | ||
* {{ | * {{done|write unit tests}} | ||
* {{ | * {{done|[http://hg.mozilla.org/mozilla-central/rev/5dc3c2d2dd4f land] on trunk}} | ||
== Process Isolation == | == Process Isolation == | ||
Line 225: | Line 255: | ||
* {{done|[[Electrolysis#Phase_I:_Bootstrap|Phase 1 (bootstrap)]]}} | * {{done|[[Electrolysis#Phase_I:_Bootstrap|Phase 1 (bootstrap)]]}} | ||
* {{done|[[IPC_Protocols]] design}} | * {{done|[[IPC_Protocols]] design}} | ||
* {{ok| | * {{ok|}}[https://bugzilla.mozilla.org/showdependencytree.cgi?id=OOPP&hide_resolved=1 Out of process plugins] | ||
* {{ok|[ | * {{ok|}}[https://wiki.mozilla.org/Electrolysis#Fennec_OOP-Tabs_Phase_II_.28In_process.29 Multi-process tabs] | ||
* {{ok|[[Electrolysis#Fennec_OOP-Tabs_Phase_III:_extensions.2Fcompatibility.2Fperformance|Phase 3 (Extensions, Compatibility and Performance)]]}} | * {{ok|[[Electrolysis#Fennec_OOP-Tabs_Phase_III:_extensions.2Fcompatibility.2Fperformance|Phase 3 (Extensions, Compatibility and Performance)]]}} | ||
* {{ok|[[Electrolysis#Phase_IV:_Multiple_content_processes|Phase 4 (Multiple content processes)]]}} | * {{ok|[[Electrolysis#Phase_IV:_Multiple_content_processes|Phase 4 (Multiple content processes)]]}} | ||
Line 275: | Line 305: | ||
'''Prototype''': None. | '''Prototype''': None. | ||
'''Implementation''': | '''Implementation''': Done (see [https://bugzilla.mozilla.org/show_bug.cgi?id=475530 bug 4755300]). | ||
''Tasks'' | ''Tasks'' | ||
Line 281: | Line 311: | ||
* {{done|Implement Patch}} | * {{done|Implement Patch}} | ||
* {{done|Implement Unit Tests}} | * {{done|Implement Unit Tests}} | ||
* {{ | * {{done|Get reviewed and land on trunk}} |
Latest revision as of 18:43, 10 January 2014

This page once listed the security features under development and our plans for deployment.
Status Overview
Feature | Design | Discussion | Review & Standards | Prototype | Implementation | Version Target |
---|---|---|---|---|---|---|
Origin | Done | Done | In Progress | Not Started | Not Started | |
CSP | Done (2/2009) | Pretty Much Done (9/2009) | Not Started | Done (8/2008) | Done (3/2010) | 4.0 |
ForceTLS | Done (Q2 2009) | In Progress | In Progress | Done (8/2010) | Done (8/2009) | 4.0 |
Process Isolation | Done | In Progress | n/a | In Progress | ? | |
X-Frame-Options | Done (Previous) | In Progress (stable) | Done (Previous) | n/a | Done | 4.0 |
Content Hashing | in progress | in progress | tbd | tbd | tbd | ? |
XSS Filter | in progress | in progress | tbd | tbd | tbd | ? |
Projects
This is intended to summarize the status and basic goals of each project, and not serve as an ultimate authority on each of the features.
SEE ALSO: Privacy/Features/
Origin Header / Sec-From
Beginning as an Security/Origin header that aimed to prevent clickjacking as well as CSRF and JSON data theft, this feature has evolved into Security/Sec-From that will not prevent clickjacking, but can be compatible with various other specifications for similar HTTP request headers.
Design: Done (6/18/2009) Discussion over the behavior and uses of Sec-From has been ongoing.
Tasks:
- [DONE] Write up an informal spec Security/Origin
- [DONE] Unify spec with Adam Barth's Internet Draft [1].
- [DONE] Unify with CORS "Origin" or pick a new header name to avoid incompatibility.
Reworked as Security/Sec-From.
Such an "Origin" header is also mentioned in HTML 5 [2].
Goals:
- Provide a reliably present "referrer" that
- has minimal potential for privacy leak
- reflects all redirects participating in the request
- aid in detecting CSRF attempts
- aid in preventing JSON data theft
Discussion: In Progress
We've synced up with Adam Barth and settled on a design. He is working with the CORS folks to see if his proposal can be unified with the Origin header they send.
- http://lists.w3.org/Archives/Public/public-webapps/2009JanMar/0057.html
- discussion about renaming from "Origin"
Tasks:
- [DONE] Settle on a design. Security/Sec-From
- [ON TRACK] Initiate public discussion on newsgroups and other public forums
Review and Standardization: In Progress. ETA: ?
Tasks:
- [DONE] Find appropriate standards body to review this feature (IETF).
- [DONE] Submit to standards body. (Adam is leading this)
Prototype: Not Started. ETA: Q4 2009
Tasks:
- [ON TRACK] create add-on that appropriately serves this header.
- [ON TRACK] create test suite that verifies values and presence of the header.
Implementation: Not Started. ETA: ?
Tasks:
- [ON TRACK] patch mozilla-central
- [ON TRACK] convert prototype test suite to automated tests
Content Security Policy
Design: In Progress. ETA: Q3 2009
Content Security Policy is intended to mitigate a large class of Web Application Vulnerabilities including Cross Site Scripting.
The CSP spec has been iterated upon many times and is approaching a stable configuration.
Goals
- (Primary) Mitigate Cross Site Scripting (XSS)
- Mitigate Clickjacking
- Mitigate Packet Sniffing Attacks
- Backward Compatibility with sites not employing CSP
Tasks:
- [DONE] create specification Security/CSP/Spec
- [ON TRACK] write up example use cases
Discussion: In Progress.
Public discussion of the CSP design and specification has taken place in mozilla.dev.security. CSP is generally discussed as a good idea, and the discussion has evolved into a compatibility, deployment and small edge-case discussion.
Tasks:
- [DONE] discuss Security/CSP/Spec spec in public forums
- [DONE] get feedback (rinse, repeat) until comments are trivial
- [DONE] come to decision about whether or not to support meta tags (not supporting)
- [DONE] come to decision about whether or not to support multiple HTTP headers
Review and Standardization: In Progress. ETA: ?
Appropriate paths for standardization and external review are being explored.
Tasks:
- [ON TRACK] find a standards body that should review CSP
- [ON TRACK] submit formal spec for review/feedback
Prototype: Done. (8/2008)
Prototype implementation was completed in August 2008. It implements an old version of CSP and does not provide the base restrictions.
Tasks:
- [DONE] create add-on that enforces policies (minus base restrictions)
Implementation: In Progress. ETA: Q3 2009
CSP as specified is being implemented on mozilla-central and is aimed for landing in Q3 2009. It can be followed in bug 493857.
Tasks:
- [DONE] make patch to parse CSP policy in headers
- [DONE] make patch to enforce CSP policy directives
- [DONE] make patch to report policy violations
- [DONE] make patch to implement base restriction enforcements
- [DONE] land patch on trunk
- [ON TRACK] create document explaining how to write a good policy
- [ON TRACK] create document explaining how to convert a site to support CSP
- [DONE] create server-based test suite (for other UAs who implement CSP)
ForceTLS / Strict-Transport-Security
Design: Done (6/18/2009) http://forcetls.sidstamm.com/
Tasks:
- [DONE] spec out syntax -- JeffH drove this
Goals
- Allow sites to "default" to HTTPS
- Help prevent MITM due to HTTPS stripping (re-serving sites as HTTP instead of HTTPS).
Discussion: In Progress.
The topic is pretty much simple and the edge cases have mostly been taken care of. Any remaining issues will be exposed in the standardization process.
Tasks:
- [DONE] lead internal discussion about use/feature set -- JeffH drove this
- [ON TRACK] discuss in a public forum
Review and Standardization: In Progress. See Strict Transport Security for details.
Tasks:
- [ON TRACK] IETF
[ON TRACK] W3C? (Currently submitted here by Paypal)
Prototype: Done. (6/2009)
https://addons.mozilla.org/en-US/firefox/addon/12714
Tasks:
- [DONE] implement with tree-based host searching and SQLite client-side data storage
- [DONE] write up summary of how to use the add-on
- [DONE] submit to AMO for screening and public dissemination
Implementation: Done. (8/2010)
Tasks:
- [DONE] convert prototype to C++ -- partially in JS, see bug 495115
- [DONE] pick optimal location to scan for header
- [DONE] write unit tests
- [DONE] land on trunk
Process Isolation
Design: In Process.
https://wiki.mozilla.org/Electrolysis
Goals
- Create infrastructure to allow process separation within Firefox
- Put plugins in a separate process for stability reasons
- Create separate content processes for stability and performance reasons
- Implemented isolated processes to reduce the damage for various types of vulnerabilities
Tasks
- [DONE] Phase 1 (bootstrap)
- [DONE] IPC_Protocols design
- [ON TRACK] Out of process plugins
- [ON TRACK] Multi-process tabs
- [ON TRACK] Phase 3 (Extensions, Compatibility and Performance)
- [ON TRACK] Phase 4 (Multiple content processes)
Discussion: In Process.
tasks
- [DONE] Set up IRC channel and newsgroup locations for communication on this feature. Electrolysis#Communication
- [DONE] Develop threat model
Review and Standardization:
- IPD: https://wiki.mozilla.org/IPDL
- Pepper API could allow for sandboxed plugins: https://wiki.mozilla.org/Plugins:PlatformIndependentNPAPI
Prototype: In Process.
Implementation:
Phases https://wiki.mozilla.org/Electrolysis#Implementation
- Plugin process separation - due to ship in Lorentz
- Out of process tabs - in process
- Add-on multi-process support and compatibility
- Performance, caching, process pools
- Sandboxing, of content processes and hopefully plugins
X-Frame-Options
Design: Done.
Goals
- Allow sites to specify how they may be enframed
- Help prevent Clickjacking
- Be compatible with IE/WebKit implementations
Discussion: In Process.
tasks
- [DROPPED] Discuss extensions of XFO with other implementation bodies (e.g., whole-tree-walking, etc.)
- [DONE] Make sure this will work along side [Security/CSP]
Review and Standardization:
There does not exist a formal specification. Eric Lawrence's blog post on X-Frame-Options serves as the closest thing to a spec.
Prototype: None.
Implementation: Done (see bug 4755300).
Tasks
- [DONE] Design Behavior
- [DONE] Implement Patch
- [DONE] Implement Unit Tests
- [DONE] Get reviewed and land on trunk