<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.mozilla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mfuller</id>
	<title>MozillaWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mozilla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mfuller"/>
	<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/Special:Contributions/Mfuller"/>
	<updated>2026-04-04T08:48:20Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Projects/Minion&amp;diff=476062</id>
		<title>Security/Projects/Minion</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Projects/Minion&amp;diff=476062"/>
		<updated>2012-10-03T16:19:40Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;cite&amp;gt;&lt;br /&gt;
Minion is a security testing framework built by Mozilla to bridge the gap between developers and security testers. To do so, it enables developers to scan their projects using a friendly interface.&lt;br /&gt;
&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE - this project is at a &#039;&#039;very&#039;&#039; early stage in its development.&lt;br /&gt;
&lt;br /&gt;
* Source code: https://github.com/ygjb/minion - public&lt;br /&gt;
* Task management: https://trello.com/b/DlVPzGaS - currently private, contact one of the Minion developers to get access&lt;br /&gt;
Developers:&lt;br /&gt;
* [[User:Psiinon|Psiinon]]&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
==Initial Diagram==&lt;br /&gt;
[[File:Minon_diagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Components==&lt;br /&gt;
===Web Interface===&lt;br /&gt;
====Overview====&lt;br /&gt;
The Web UI is responsible for:&lt;br /&gt;
* Generating the web UI (not surprisingly)&lt;br /&gt;
* Authenticating and managing users and user sessions&lt;br /&gt;
====Notes====&lt;br /&gt;
* Log in using Persona (BrowserID) (can be restricted by domain for use on central server by organizations)&lt;br /&gt;
* Menu -&amp;gt; New Scan, Running Scans, Completed Scans&lt;br /&gt;
** Future: Group Scans (member of groups, permissions, see other scans by group members/project)&lt;br /&gt;
* New Scan&lt;br /&gt;
** Basic: URL, Port&lt;br /&gt;
** Advanced: Login information, technologies used (customize scan such as SQLmap for SQL)&lt;br /&gt;
** Future: Scan type based on plugin (web app, client code, etc)&lt;br /&gt;
It should maintain as little data in memory as possible - all data should be retrieved from the Task Engine (and/or db?). This will allow us to run multiple Web UI servers for one service.&lt;br /&gt;
====Questions====&lt;br /&gt;
* Should this also provide a REST based API, or will we rely on the one implemented by the Task Engine?&lt;br /&gt;
* Will it need access to the db or will it get all data from the Task Engine?&lt;br /&gt;
&lt;br /&gt;
===Task Engine===&lt;br /&gt;
====Overview====&lt;br /&gt;
The task engine is responsible for:&lt;br /&gt;
* Managing Minions&lt;br /&gt;
* Persisting all info to the db&lt;br /&gt;
* Providing a REST API&lt;br /&gt;
====Notes====&lt;br /&gt;
* Instance started when user clicks start scan&lt;br /&gt;
* Collects provided information&lt;br /&gt;
* Starts scan based on provided information&lt;br /&gt;
* Launches tools (Minions) and awaits responses&lt;br /&gt;
It should persist all data to a db and maintain as little data in memory as possible. This will allow us to run multiple Task Engine servers for one service, with all of the synchronization happening via the db (which would probably be clustered).&lt;br /&gt;
&lt;br /&gt;
===Minions (Scanners)===&lt;br /&gt;
* Receive kickoff from task engine&lt;br /&gt;
* Scan target&lt;br /&gt;
* Send results back to task engine in necessary format (JSON)&lt;br /&gt;
&lt;br /&gt;
===Target===&lt;br /&gt;
* Site hosted by developer&lt;br /&gt;
* Can be hosted or running locally&lt;br /&gt;
&lt;br /&gt;
==Configuration Abstraction==&lt;br /&gt;
To pass data between components, a standard configuration and data scheme must be used. For Minion, we have decided to use JSON and a REST API as the format for passing data. For example, the user interface will collect the necessary options, then call the task engine and pass it a JSON string of those options. The task engine will read the options and use each installed tool&#039;s REST API to make requests to the tool (some tools may need different options than others). The tool will pass its results back to the task engine as a JSON string and the task engine will compile all returned results into a single JSON string which will be returned to the interface. The interface will deconstruct the string into human-readable results and display them on the results page.&lt;br /&gt;
&lt;br /&gt;
===Basic Tool Requirements===&lt;br /&gt;
Each tool takes a number of base options as well as optional options that can improve the scan&#039;s accuracy or increase its functionality.&lt;br /&gt;
&lt;br /&gt;
====Zed Attack Proxy====&lt;br /&gt;
Base options: URL&lt;br /&gt;
&lt;br /&gt;
Optional: spider depth-level, CSRF tokens, authentication information, parameters to fuzz&lt;br /&gt;
&lt;br /&gt;
====Garmr====&lt;br /&gt;
Base options: URL&lt;br /&gt;
&lt;br /&gt;
Optional: parameters to test&lt;br /&gt;
&lt;br /&gt;
Note: most options with Garmr involve output, which should be handled without interaction from the user.&lt;br /&gt;
&lt;br /&gt;
====Skipfish====&lt;br /&gt;
Base options: URL&lt;br /&gt;
&lt;br /&gt;
Optional: authentication credentials, cookie values, non-standard header information, scan time limit (see http://code.google.com/p/skipfish/wiki/SkipfishDoc for a full list)&lt;br /&gt;
&lt;br /&gt;
Note: Skipfish has a lot of additional options that include domains to exclude in crawling, domains to ignore in testing, wordlist generation, folder output, etc. To make it as easy to use as possible, the Skipfish plugin should include defaults for all of these options so that the user will never need to worry about the options.&lt;br /&gt;
&lt;br /&gt;
==Installation Notes==&lt;br /&gt;
PYTHONPATH=&amp;quot;$PYTHONPATH:$HOME/minion/task_engine&amp;quot;&lt;br /&gt;
PYTHONPATH=&amp;quot;$PYTHONPATH:$HOME/minion/plugins&amp;quot;&lt;br /&gt;
export PYTHONPATH&lt;br /&gt;
&lt;br /&gt;
sudo easy_install bottle&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/RiskRatings&amp;diff=470420</id>
		<title>Security/RiskRatings</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/RiskRatings&amp;diff=470420"/>
		<updated>2012-09-13T20:56:32Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: /* Impact */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is under construction&lt;br /&gt;
==Calculating Risk Ratings==&lt;br /&gt;
The Security Assurance team calculates risk ratings using a basic methodology capturing the business importance of given actions being requested, and the impact should the action not be adequatly completed.&lt;br /&gt;
&lt;br /&gt;
As all our work is being tracked via bugzilla we are using the &amp;lt;i&amp;gt;importance&amp;lt;/i&amp;gt; flags that are already available to classify this work so it can be properly prioritized.&lt;br /&gt;
&lt;br /&gt;
When assessing an item using the tables below, we consider the request in the context of each of the headings, and score each item based on its matching values.&lt;br /&gt;
&lt;br /&gt;
Importance to the business&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;fullwidth-table&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&#039;&#039;&#039;Rank&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&#039;&#039;&#039;Priority&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |&#039;&#039;&#039;Definition&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|5||P1||Incident||An active threat vector to Mozilla&lt;br /&gt;
|-&lt;br /&gt;
|4||P2||Mozilla Initiative||A project wide initiate to achieve a specific goal (ie. k9o, basecamp)&lt;br /&gt;
|-&lt;br /&gt;
|3||P3||Overall Mozilla Quarterly Goal||Specific quarterly goal that spans functional areas (includes ongoing goals like &amp;quot;keep Firefox safe&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|2||P4||Team Quarterly Goal (Any Team)||The specific action or bug is directly related to the publicly stated quarterly goals of that area&lt;br /&gt;
|-&lt;br /&gt;
|1||P5||Age||Reviews that were previously uncategorized but are now older than &#039;x&#039; time &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;need to define x&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|0||None||Other||Any other request that does not fall into the above categories&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Impact==&lt;br /&gt;
The impact of a item is the potential outcome if the threat or negative action is realized.  The table below indicates the severity of the impact and what that means across several domains as examples.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;fullwidth-table&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Rank&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Impact&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operational&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;User&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Privacy&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Engineering&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Reputation&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|5||blocker||down until fixed or permanently removed||Complete control over the users device||Violation of Privacy Policy with production data||Platform or Application configuration changes needed.||Negative press in mainstream media&lt;br /&gt;
|-&lt;br /&gt;
|4||critical||Significant Outage (intl store)||The ability to execute scripts and code that is sandboxed on the users device||Violation of Privacy Policy||Reimplementation of core components required.||Negative press in industry media&lt;br /&gt;
|-&lt;br /&gt;
|3||major||Moderate Outage, complaints from users||Specific information about specific users can be obtained||Moderate concerns over Privacy issues||New development required to resolve issues.||Negative comments from user base&lt;br /&gt;
|-&lt;br /&gt;
|2||normal||Minor Outage, in line with SLAs||User behaviour can be trended||Minor concerns over Privacy issues||Multiple bug fixes and changes required.||Negative comments from community members&lt;br /&gt;
|-&lt;br /&gt;
|1||minor||Ops Team Notified||Browser crashes||Unresolved privacy issues inline with Privacy Policy||Platform or Application configuration changes needed.||Negative comments from stakeholders&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 Total Priority Score = ( (total of impact scores X priority value) / max impact score) X 100)&lt;br /&gt;
&lt;br /&gt;
== What Scores Mean ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0; style=&amp;quot;width: 10%;&amp;quot;|&#039;&#039;&#039;Critical (100+)&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0; style=&amp;quot;width: 10%;&amp;quot;|&#039;&#039;&#039;High (99-76)&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0; style=&amp;quot;width: 10%;&amp;quot;|&#039;&#039;&#039;Medium (75-26)&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0; style=&amp;quot;width: 10%;&amp;quot;|&#039;&#039;&#039;Low (25-0)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Effort Estimation || 1 Month || 2 Weeks || 2 Days || &amp;lt;1 Day&lt;br /&gt;
|-&lt;br /&gt;
|Review Type || Group (Scheduled on SecReview Calendar) || Group (Scheduled on SecReview Calendar) || Individual Reviewer || Individual Reviewer&lt;br /&gt;
|-&lt;br /&gt;
|Required Documents from development team&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|Architecture Diagram&lt;br /&gt;
|-&lt;br /&gt;
|Application Diagram, &lt;br /&gt;
|-&lt;br /&gt;
|Data Flow Enumeration, &lt;br /&gt;
|-&lt;br /&gt;
|Threat Model&lt;br /&gt;
|}&lt;br /&gt;
| &lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|Required at input&lt;br /&gt;
|-&lt;br /&gt;
|Required at input&lt;br /&gt;
|-&lt;br /&gt;
|Required at input&lt;br /&gt;
|-&lt;br /&gt;
|Created During review with Security Lead&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|Created during review &lt;br /&gt;
|-&lt;br /&gt;
|Created during review &lt;br /&gt;
|-&lt;br /&gt;
|Created during review&lt;br /&gt;
|-&lt;br /&gt;
|Created during review  &lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
 None required, &lt;br /&gt;
 but may speed review&lt;br /&gt;
|&lt;br /&gt;
 None required, &lt;br /&gt;
 but may speed review&lt;br /&gt;
|-&lt;br /&gt;
| How Documented || SecReview Wiki || SecReview Wiki || SecReview Wiki -or- in Secreview bug (with indidication of no-wiki) || In SecReview Bug&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Previous Working Copy=&lt;br /&gt;
==Calculating Risk Ratings==&lt;br /&gt;
The infrastructure security team calculates risk ratings using a basic methodology capturing the likelihood of a threat becoming a successful attack, and the impact should the attack be completed.&lt;br /&gt;
&lt;br /&gt;
When assessing a threat using the tables below, consider the threat in the context of each of the headings, and score each threat for each column.  Select the highest score and record that as the impact or likelihood.&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
Consider the threat &amp;quot;URL Shorteners get a copy of URLs shared by F1 Users&amp;quot; from the [[Security/Reviews/F1#Threat Model|Mozilla F1 security review]].  &lt;br /&gt;
&lt;br /&gt;
Looking at the [[Security/RiskRatings#Likelihood|Likelihood table]] we see:&lt;br /&gt;
* Probability is 5 since it is already happening (Ongoing Issue)&lt;br /&gt;
* Technical is also 5 since URL shorteners are relatively easy to enumerate&lt;br /&gt;
&lt;br /&gt;
Going to the [[Security/RiskRatings#Impact|Impact table]] we see that:&lt;br /&gt;
* Operational impact is zero since it has not effect on the stability of the service&lt;br /&gt;
* User impact is 2 since user behaviour can be trended.&lt;br /&gt;
* Privacy impact is 4 since sharing information with 3rd parties is a violation of our privacy policies.&lt;br /&gt;
* Financial impact is 1 since it is extremely low cost to resolve the issue&lt;br /&gt;
* Engineering impact is 3 since replacing the functionality requires authoring new software.&lt;br /&gt;
* Reputation impact is 3 since there may be negative comments from our users who do not wish to use the shortening service&lt;br /&gt;
&lt;br /&gt;
The highest Likelihood score is 5, and the highest impact score is 4 (Privacy). &lt;br /&gt;
&lt;br /&gt;
To calculate the risk score simply multiply the likelihood by the impact, in the case of the issue discussed above, the Risk Rating would be 20.&lt;br /&gt;
&lt;br /&gt;
==Likelihood==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;fullwidth-table&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Likelihood&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Probability&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Technical&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1||Shouldn&#039;t happen||Advanced Attack with requirement of multiple vulnerabilities to exploit&lt;br /&gt;
|-&lt;br /&gt;
|2||Once every few years||Advanced Attack&lt;br /&gt;
|-&lt;br /&gt;
|3||Once a year||Moderate difficulty attack vector&lt;br /&gt;
|-&lt;br /&gt;
|4||Multiple times a year||Common attack vector, requires manual exploit creation&lt;br /&gt;
|-&lt;br /&gt;
|5||Ongoing issue||Common attack vector, easy to mount with available tools&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Impact==&lt;br /&gt;
The impact of a finding is the potential outcome if the threat is realized.  The table below indicates the severity of the impact and what that means across several domains within an organization.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;fullwidth-table&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Impact&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Operational&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;User&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Privacy&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Financial&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Engineering&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Reputation&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1||Ops Team Notified||Browser crashes||Unresolved privacy issues inline with Privacy Policy||Low cost to remediate||Platform or Application configuration changes needed.||Negative comments from stakeholders&lt;br /&gt;
|-&lt;br /&gt;
|2||Minor Outage, in line with SLAs||User behaviour can be trended||Minor concerns over Privacy issues||Director approval to pay cost to remediate||Multiple bug fixes and changes required.||Negative comments from community members&lt;br /&gt;
|-&lt;br /&gt;
|3||Moderate Outage, complaints from users||Specific information about specific users can be obtained||Moderate concerns over Privacy issues||Requires budget changes to remediate||New development required to resolve issues.||Negative comments from user base&lt;br /&gt;
|-&lt;br /&gt;
|4||Significant Outage (intl store)||The ability to execute scripts and code that is sandboxed on the users device||Violation of Privacy Policy||Requires Board review to pay for remediation||Reimplementation of core components required.||Negative press in industry media&lt;br /&gt;
|-&lt;br /&gt;
|5||Service will be mothballed.||Complete control over the users device||Violation of Privacy Policy with Production Data||Extreme cost for remediation (e.g. MoCo/Mofo can&#039;t afford to)||Complete redesign and rewrite||Negative press in mainstream media&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Risk Rating Methodologies Used Elsewhere ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://msdn.microsoft.com/en-us/library/aa302419.aspx#c03618429_011 DREAD] from Microsoft&#039;&#039;&#039; ([http://blogs.msdn.com/b/david_leblanc/archive/2007/08/13/dreadful.aspx blog post])&lt;br /&gt;
Uses five categories:&lt;br /&gt;
* Damage - how bad would an attack be?&lt;br /&gt;
* Reproducibility - how easy it is to reproduce the attack?&lt;br /&gt;
* Exploitability - how much work is it to launch the attack?&lt;br /&gt;
* Affected users - how many people will be impacted?&lt;br /&gt;
* Discoverability - how easy it is to discover the threat?&lt;br /&gt;
&lt;br /&gt;
When a given threat is assessed using DREAD, each category is given a rating. For example, 3 for high, 2 for medium, 1 for low and 0 for none. The sum of all ratings for a given exploit can be used to prioritize among different exploits.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://www.owasp.org/index.php/OWASP_Risk_Rating_Methodology OWASP Risk Rating Methodology]&#039;&#039;&#039;&lt;br /&gt;
Similar to Yvan&#039;s in that it uses &#039;&#039;&#039;Risk = Likelihood * Impact&#039;&#039;&#039; but produces a rating from 0 to 9 (or three groups 1-3, 4-6, 7-9 which equate to Low, Medium, and High).&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Projects/Minion&amp;diff=468480</id>
		<title>Security/Projects/Minion</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Projects/Minion&amp;diff=468480"/>
		<updated>2012-09-06T18:05:30Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: /* Configuration Abstraction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;cite&amp;gt;&lt;br /&gt;
Minion is a security testing framework built by Mozilla to bridge the gap between developers and security testers. To do so, it enables developers to scan their projects using a friendly interface.&lt;br /&gt;
&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE - this project is at a &#039;&#039;very&#039;&#039; early stage in its development.&lt;br /&gt;
&lt;br /&gt;
* Source code: https://github.com/ygjb/minion - public&lt;br /&gt;
* Task management: https://trello.com/b/DlVPzGaS - currently private, contact one of the Minion developers to get access&lt;br /&gt;
Developers:&lt;br /&gt;
* [[User:Psiinon|Psiinon]]&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
==Initial Diagram==&lt;br /&gt;
[[File:Minon_diagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Components==&lt;br /&gt;
===Web Interface===&lt;br /&gt;
* Log in using Persona (BrowserID) (can be restricted by domain for use on central server by organizations)&lt;br /&gt;
* Menu -&amp;gt; New Scan, Running Scans, Completed Scans&lt;br /&gt;
** Future: Group Scans (member of groups, permissions, see other scans by group members/project)&lt;br /&gt;
* New Scan&lt;br /&gt;
** Basic: URL, Port&lt;br /&gt;
** Advanced: Login information, technologies used (customize scan such as SQLmap for SQL)&lt;br /&gt;
** Future: Scan type based on plugin (web app, client code, etc)&lt;br /&gt;
&lt;br /&gt;
===Task Engine===&lt;br /&gt;
* Instance started when user clicks start scan&lt;br /&gt;
* Collects provided information&lt;br /&gt;
* Starts scan based on provided information&lt;br /&gt;
* Launches tools (Minions) and awaits responses&lt;br /&gt;
&lt;br /&gt;
===Minions (Scanners)===&lt;br /&gt;
* Receive kickoff from task engine&lt;br /&gt;
* Scan target&lt;br /&gt;
* Send results back to task engine in necessary format (JSON)&lt;br /&gt;
&lt;br /&gt;
===Target===&lt;br /&gt;
* Site hosted by developer&lt;br /&gt;
* Can be hosted or running locally&lt;br /&gt;
&lt;br /&gt;
==Configuration Abstraction==&lt;br /&gt;
To pass data between components, a standard configuration and data scheme must be used. For Minion, we have decided to use JSON and a REST API as the format for passing data. For example, the user interface will collect the necessary options, then call the task engine and pass it a JSON string of those options. The task engine will read the options and use each installed tool&#039;s REST API to make requests to the tool (some tools may need different options than others). The tool will pass its results back to the task engine as a JSON string and the task engine will compile all returned results into a single JSON string which will be returned to the interface. The interface will deconstruct the string into human-readable results and display them on the results page.&lt;br /&gt;
&lt;br /&gt;
===Basic Tool Requirements===&lt;br /&gt;
Each tool takes a number of base options as well as optional options that can improve the scan&#039;s accuracy or increase its functionality.&lt;br /&gt;
&lt;br /&gt;
====Zed Attack Proxy====&lt;br /&gt;
Base options: URL&lt;br /&gt;
&lt;br /&gt;
Optional: spider depth-level, CSRF tokens, authentication information, parameters to fuzz&lt;br /&gt;
&lt;br /&gt;
====Garmr====&lt;br /&gt;
Base options: URL&lt;br /&gt;
&lt;br /&gt;
Optional: parameters to test&lt;br /&gt;
&lt;br /&gt;
Note: most options with Garmr involve output, which should be handled without interaction from the user.&lt;br /&gt;
&lt;br /&gt;
====Skipfish====&lt;br /&gt;
Base options: URL&lt;br /&gt;
&lt;br /&gt;
Optional: authentication credentials, cookie values, non-standard header information, scan time limit (see http://code.google.com/p/skipfish/wiki/SkipfishDoc for a full list)&lt;br /&gt;
&lt;br /&gt;
Note: Skipfish has a lot of additional options that include domains to exclude in crawling, domains to ignore in testing, wordlist generation, folder output, etc. To make it as easy to use as possible, the Skipfish plugin should include defaults for all of these options so that the user will never need to worry about the options.&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Projects/Minion&amp;diff=468470</id>
		<title>Security/Projects/Minion</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Projects/Minion&amp;diff=468470"/>
		<updated>2012-09-06T17:37:39Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: /* Basic Tool Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;cite&amp;gt;&lt;br /&gt;
Minion is a security testing framework built by Mozilla to bridge the gap between developers and security testers. To do so, it enables developers to scan their projects using a friendly interface.&lt;br /&gt;
&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE - this project is at a &#039;&#039;very&#039;&#039; early stage in its development.&lt;br /&gt;
&lt;br /&gt;
* Source code: https://github.com/ygjb/minion - public&lt;br /&gt;
* Task management: https://trello.com/b/DlVPzGaS - currently private, contact one of the Minion developers to get access&lt;br /&gt;
Developers:&lt;br /&gt;
* [[User:Psiinon|Psiinon]]&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
==Initial Diagram==&lt;br /&gt;
[[File:Minon_diagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Components==&lt;br /&gt;
===Web Interface===&lt;br /&gt;
* Log in using Persona (BrowserID) (can be restricted by domain for use on central server by organizations)&lt;br /&gt;
* Menu -&amp;gt; New Scan, Running Scans, Completed Scans&lt;br /&gt;
** Future: Group Scans (member of groups, permissions, see other scans by group members/project)&lt;br /&gt;
* New Scan&lt;br /&gt;
** Basic: URL, Port&lt;br /&gt;
** Advanced: Login information, technologies used (customize scan such as SQLmap for SQL)&lt;br /&gt;
** Future: Scan type based on plugin (web app, client code, etc)&lt;br /&gt;
&lt;br /&gt;
===Task Engine===&lt;br /&gt;
* Instance started when user clicks start scan&lt;br /&gt;
* Collects provided information&lt;br /&gt;
* Starts scan based on provided information&lt;br /&gt;
* Launches tools (Minions) and awaits responses&lt;br /&gt;
&lt;br /&gt;
===Minions (Scanners)===&lt;br /&gt;
* Receive kickoff from task engine&lt;br /&gt;
* Scan target&lt;br /&gt;
* Send results back to task engine in necessary format (JSON)&lt;br /&gt;
&lt;br /&gt;
===Target===&lt;br /&gt;
* Site hosted by developer&lt;br /&gt;
* Can be hosted or running locally&lt;br /&gt;
&lt;br /&gt;
==Configuration Abstraction==&lt;br /&gt;
To pass data between components, a standard configuration and data scheme must be used. For Minion, we have decided to use JSON as the format for passing data. For example, the user interface will collect the necessary options, then call the task engine and pass it a JSON string of those options. The task engine will read the options, split them into new JSON strings as necessary to send to each installed tool (some tools may need different options than others). The tool will pass its results back to the task engine as a JSON string and the task engine will compile all returned results into a single JSON string which will be returned to the interface. The interface will deconstruct the string into human-readable results and display them on the results page.&lt;br /&gt;
&lt;br /&gt;
===Basic Tool Requirements===&lt;br /&gt;
Each tool takes a number of base options as well as optional options that can improve the scan&#039;s accuracy or increase its functionality.&lt;br /&gt;
&lt;br /&gt;
====Zed Attack Proxy====&lt;br /&gt;
Base options: URL&lt;br /&gt;
&lt;br /&gt;
Optional: spider depth-level, CSRF tokens, authentication information, parameters to fuzz&lt;br /&gt;
&lt;br /&gt;
====Garmr====&lt;br /&gt;
Base options: URL&lt;br /&gt;
&lt;br /&gt;
Optional: parameters to test&lt;br /&gt;
&lt;br /&gt;
Note: most options with Garmr involve output, which should be handled without interaction from the user.&lt;br /&gt;
&lt;br /&gt;
====Skipfish====&lt;br /&gt;
Base options: URL&lt;br /&gt;
&lt;br /&gt;
Optional: authentication credentials, cookie values, non-standard header information, scan time limit (see http://code.google.com/p/skipfish/wiki/SkipfishDoc for a full list)&lt;br /&gt;
&lt;br /&gt;
Note: Skipfish has a lot of additional options that include domains to exclude in crawling, domains to ignore in testing, wordlist generation, folder output, etc. To make it as easy to use as possible, the Skipfish plugin should include defaults for all of these options so that the user will never need to worry about the options.&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Projects/Minion&amp;diff=468469</id>
		<title>Security/Projects/Minion</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Projects/Minion&amp;diff=468469"/>
		<updated>2012-09-06T17:37:02Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;cite&amp;gt;&lt;br /&gt;
Minion is a security testing framework built by Mozilla to bridge the gap between developers and security testers. To do so, it enables developers to scan their projects using a friendly interface.&lt;br /&gt;
&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE - this project is at a &#039;&#039;very&#039;&#039; early stage in its development.&lt;br /&gt;
&lt;br /&gt;
* Source code: https://github.com/ygjb/minion - public&lt;br /&gt;
* Task management: https://trello.com/b/DlVPzGaS - currently private, contact one of the Minion developers to get access&lt;br /&gt;
Developers:&lt;br /&gt;
* [[User:Psiinon|Psiinon]]&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
==Initial Diagram==&lt;br /&gt;
[[File:Minon_diagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Components==&lt;br /&gt;
===Web Interface===&lt;br /&gt;
* Log in using Persona (BrowserID) (can be restricted by domain for use on central server by organizations)&lt;br /&gt;
* Menu -&amp;gt; New Scan, Running Scans, Completed Scans&lt;br /&gt;
** Future: Group Scans (member of groups, permissions, see other scans by group members/project)&lt;br /&gt;
* New Scan&lt;br /&gt;
** Basic: URL, Port&lt;br /&gt;
** Advanced: Login information, technologies used (customize scan such as SQLmap for SQL)&lt;br /&gt;
** Future: Scan type based on plugin (web app, client code, etc)&lt;br /&gt;
&lt;br /&gt;
===Task Engine===&lt;br /&gt;
* Instance started when user clicks start scan&lt;br /&gt;
* Collects provided information&lt;br /&gt;
* Starts scan based on provided information&lt;br /&gt;
* Launches tools (Minions) and awaits responses&lt;br /&gt;
&lt;br /&gt;
===Minions (Scanners)===&lt;br /&gt;
* Receive kickoff from task engine&lt;br /&gt;
* Scan target&lt;br /&gt;
* Send results back to task engine in necessary format (JSON)&lt;br /&gt;
&lt;br /&gt;
===Target===&lt;br /&gt;
* Site hosted by developer&lt;br /&gt;
* Can be hosted or running locally&lt;br /&gt;
&lt;br /&gt;
==Configuration Abstraction==&lt;br /&gt;
To pass data between components, a standard configuration and data scheme must be used. For Minion, we have decided to use JSON as the format for passing data. For example, the user interface will collect the necessary options, then call the task engine and pass it a JSON string of those options. The task engine will read the options, split them into new JSON strings as necessary to send to each installed tool (some tools may need different options than others). The tool will pass its results back to the task engine as a JSON string and the task engine will compile all returned results into a single JSON string which will be returned to the interface. The interface will deconstruct the string into human-readable results and display them on the results page.&lt;br /&gt;
&lt;br /&gt;
===Basic Tool Requirements===&lt;br /&gt;
Each tool takes a number of base options as well as optional options that can improve the scan&#039;s accuracy or increase its functionality.&lt;br /&gt;
&lt;br /&gt;
====Zed Attack Proxy====&lt;br /&gt;
Base options: URL&lt;br /&gt;
Optional: spider depth-level, CSRF tokens, authentication information, parameters to fuzz&lt;br /&gt;
&lt;br /&gt;
====Garmr====&lt;br /&gt;
Base options: URL&lt;br /&gt;
Optional: parameters to test&lt;br /&gt;
Note: most options with Garmr involve output, which should be handled without interaction from the user.&lt;br /&gt;
&lt;br /&gt;
====Skipfish====&lt;br /&gt;
Base options: URL&lt;br /&gt;
Optional: authentication credentials, cookie values, non-standard header information, scan time limit (see http://code.google.com/p/skipfish/wiki/SkipfishDoc for a full list)&lt;br /&gt;
Note: Skipfish has a lot of additional options that include domains to exclude in crawling, domains to ignore in testing, wordlist generation, folder output, etc. To make it as easy to use as possible, the Skipfish plugin should include defaults for all of these options so that the user will never need to worry about the options.&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Projects/Minion&amp;diff=465624</id>
		<title>Security/Projects/Minion</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Projects/Minion&amp;diff=465624"/>
		<updated>2012-08-29T21:22:01Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;cite&amp;gt;&lt;br /&gt;
Minion is a security testing framework built by Mozilla to bridge the gap between developers and security testers. To do so, it enables developers to scan their projects using a friendly interface.&lt;br /&gt;
&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE - this project is at a &#039;&#039;very&#039;&#039; early stage in its development.&lt;br /&gt;
&lt;br /&gt;
* Source code: https://github.com/ygjb/minion - public&lt;br /&gt;
* Task management: https://trello.com/b/DlVPzGaS - currently private, contact one of the Minion developers to get access&lt;br /&gt;
Developers:&lt;br /&gt;
* [[User:Psiinon|Psiinon]]&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
==Initial Diagram==&lt;br /&gt;
[[File:Minon_diagram.png]]&lt;br /&gt;
&lt;br /&gt;
==Components==&lt;br /&gt;
===Web Interface===&lt;br /&gt;
* Log in using Persona (BrowserID) (can be restricted by domain for use on central server by organizations)&lt;br /&gt;
* Menu -&amp;gt; New Scan, Running Scans, Completed Scans&lt;br /&gt;
** Future: Group Scans (member of groups, permissions, see other scans by group members/project)&lt;br /&gt;
* New Scan&lt;br /&gt;
** Basic: URL, Port&lt;br /&gt;
** Advanced: Login information, technologies used (customize scan such as SQLmap for SQL)&lt;br /&gt;
** Future: Scan type based on plugin (web app, client code, etc)&lt;br /&gt;
&lt;br /&gt;
===Task Engine===&lt;br /&gt;
* Instance started when user clicks start scan&lt;br /&gt;
* Collects provided information&lt;br /&gt;
* Starts scan based on provided information&lt;br /&gt;
* Launches tools (Minions) and awaits responses&lt;br /&gt;
&lt;br /&gt;
===Minions (Scanners)===&lt;br /&gt;
* Receive kickoff from task engine&lt;br /&gt;
* Scan target&lt;br /&gt;
* Send results back to task engine in necessary format (JSON)&lt;br /&gt;
&lt;br /&gt;
===Target===&lt;br /&gt;
* Site hosted by developer&lt;br /&gt;
* Can be hosted or running locally&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Projects/Minion&amp;diff=465512</id>
		<title>Security/Projects/Minion</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Projects/Minion&amp;diff=465512"/>
		<updated>2012-08-29T18:19:12Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;cite&amp;gt;&lt;br /&gt;
Minion is a security testing framework built by Mozilla to bridge the gap between developers and security testers. To do so, it enables developers to scan their projects using a friendly interface.&lt;br /&gt;
&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE - this project is at a &#039;&#039;very&#039;&#039; early stage in its development.&lt;br /&gt;
&lt;br /&gt;
* Source code: https://github.com/ygjb/minion - public&lt;br /&gt;
* Task management: https://trello.com/b/DlVPzGaS - currently private, contact one of the Minion developers to get access&lt;br /&gt;
Developers:&lt;br /&gt;
* [[User:Psiinon|Psiinon]]&lt;br /&gt;
* TBA&lt;br /&gt;
&lt;br /&gt;
==Initial Diagram==&lt;br /&gt;
[[File:Minon_diagram.png]]&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=File:Minon_diagram.png&amp;diff=465511</id>
		<title>File:Minon diagram.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=File:Minon_diagram.png&amp;diff=465511"/>
		<updated>2012-08-29T18:18:26Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: Initial minion diagram&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Initial minion diagram&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/Projects/Minion&amp;diff=465356</id>
		<title>Security/Projects/Minion</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/Projects/Minion&amp;diff=465356"/>
		<updated>2012-08-29T15:26:39Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: Created page with &amp;quot;Placeholder page for Minion Project&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Placeholder page for Minion Project&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=WebAppSec/Filing_In_Bugzilla&amp;diff=462962</id>
		<title>WebAppSec/Filing In Bugzilla</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=WebAppSec/Filing_In_Bugzilla&amp;diff=462962"/>
		<updated>2012-08-21T21:31:52Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: /* Optional Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains, step-by-step, how to file a web security bug in Bugzilla using all the proper flags, keywords, whitboard tags, etc.&lt;br /&gt;
&lt;br /&gt;
==Filing a Web Security Bug in Bugzilla==&lt;br /&gt;
===Selecting a Product and Component===&lt;br /&gt;
Begin by opening a new bug: https://bugzilla.mozilla.org/enter_bug.cgi&lt;br /&gt;
&lt;br /&gt;
Type the affected hostname (e.g. &amp;quot;blog.mozilla.com&amp;quot;) into the search box at the top of the page. The box will autocomplete your search with available options. If no result is found, you can search manually or file a bug under &amp;quot;Other.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To file manually, most website bugs will be filed in &amp;quot;Other Products&amp;quot; at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[Image:BugzillaProcess0.png]]&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Websites&amp;quot; section under &amp;quot;Other&amp;quot; contains most sites.&lt;br /&gt;
&lt;br /&gt;
[[Image:BugzillaProcess1.png|700px]]&lt;br /&gt;
&lt;br /&gt;
Next, select a component from the list. If the website with the vulnerability is not listed, select &amp;quot;Other.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Image:BugzillaProcess2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
===Provide a Summary===&lt;br /&gt;
Provide a descriptive summary of the bug. Sample titles include:&lt;br /&gt;
* XSS in getpersonas.mozilla.com ID Parameter&lt;br /&gt;
* mozilla.org CSRF vulnerability on Profile Page&lt;br /&gt;
&lt;br /&gt;
Check the list of similar bugs that are found and try to make sure the bug has not yet been reported.&lt;br /&gt;
&lt;br /&gt;
===Enter a Description===&lt;br /&gt;
Provide as much information about the bug as possible. This should include:&lt;br /&gt;
* A full URL of the vulnerable page&lt;br /&gt;
* Any accounts or user profiles used to test the vulnerability&lt;br /&gt;
* The vulnerable parameter if applicable&lt;br /&gt;
* Tests you have used to verify the issue&lt;br /&gt;
* The payload used if applicable&lt;br /&gt;
** For example, if the issue is XSS, please provide the exact XSS payload you used&lt;br /&gt;
* What the expected behavior is&lt;br /&gt;
* Any other information that could be useful in reproducing the bug&lt;br /&gt;
&lt;br /&gt;
===Setting Security Flags===&lt;br /&gt;
Security flags are used to keep sensitive bugs hidden until the problem is resolved. This is done to protect our websites and users from attack during the time it takes to fix an issue. Marking a bug as security sensitive will still allow you to see updates to the bug, it will simply hide it from the public.&lt;br /&gt;
&lt;br /&gt;
For website vulnerabilities, please check the following box (note that you may need to click &amp;quot;Show Advanced Fields&amp;quot; to see it):&lt;br /&gt;
* Many users could be harmed by this security problem: it should be kept hidden from the public until it is resolved.&lt;br /&gt;
&lt;br /&gt;
If you are in the Websites group for Mozilla, you may also see another checkbox which can be selected:&lt;br /&gt;
* Security-Sensitive Websites Bug&lt;br /&gt;
&lt;br /&gt;
Checking one of these boxes is sufficient to hide the security issue.&lt;br /&gt;
&lt;br /&gt;
===Optional Information===&lt;br /&gt;
The following options will further help the security team respond to your bug, but are not required for a basic bug report.&lt;br /&gt;
&lt;br /&gt;
====Additional Information====&lt;br /&gt;
For the &amp;quot;Version&amp;quot; drop-down, leave &amp;quot;unspecified&amp;quot; selected unless the vulnerability affects a specific version of Firefox. Change &amp;quot;Operating System&amp;quot; to &amp;quot;All&amp;quot; unless the vulnerability affects only one version of an OS. The same is true for &amp;quot;Hardware.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Selecting a Severity====&lt;br /&gt;
For the &amp;quot;Severity&amp;quot; drop-down box, use the ratings listed on the WebAppSec Wiki here to determine a rating: [https://wiki.mozilla.org/WebAppSec/Web_App_Severity_Ratings#Rating WebAppSec Wiki]&lt;br /&gt;
&lt;br /&gt;
Typically, XSS uses &amp;quot;Critical&amp;quot; and vulnerabilities that expose information are &amp;quot;Major.&amp;quot; Any SQL injection attacks are considered a &amp;quot;Blocker.&amp;quot; Please use the ratings list to determine the exact rating for the vulnerability.&lt;br /&gt;
&lt;br /&gt;
====Attachments====&lt;br /&gt;
Please include attachments such as:&lt;br /&gt;
* Screenshots of the issue (such as an XSS alert box executing)&lt;br /&gt;
* A POC script&lt;br /&gt;
* A demo video&lt;br /&gt;
&lt;br /&gt;
Please do not include videos or attachments that explain the issue generically (for example, a YouTube video explaining what XSS is).&lt;br /&gt;
&lt;br /&gt;
====Adding Keywords====&lt;br /&gt;
Keywords assist the security team in filtering and searching for bugs. Properly supplying keywords will help a bug receive the correct attention. A full list of keywords is available here: https://bugzilla-stage.mozilla.org/describekeywords.cgi but the only ones applicable to website security bugs are:&lt;br /&gt;
* sec-critical&lt;br /&gt;
* sec-high&lt;br /&gt;
* sec-moderate&lt;br /&gt;
* sec-low&lt;br /&gt;
* sec-other&lt;br /&gt;
&lt;br /&gt;
Keywords also help categorize the kind of bug (i.e. XSS, CSRF, etc). Please use the list here to determine the appropriate keywords: https://wiki.mozilla.org/Security_Severity_Ratings&lt;br /&gt;
&lt;br /&gt;
====Whiteboard Tags====&lt;br /&gt;
Whiteboard tags are not typically used with web security vulnerabilities. Please use keywords as described above.&lt;br /&gt;
&lt;br /&gt;
====Additional Options====&lt;br /&gt;
A URL may be provided that links to the vulnerable page.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Blocks&amp;quot; and &amp;quot;Depends On&amp;quot; options may be set if the submitted bug either blocks another bug with a known Bugzilla bug number or relies on another bug before it can be fixed. In the case of web security bugs, these options are often not set unless the bug is discovered during a security review, in which case it blocks the original review request bug.&lt;br /&gt;
&lt;br /&gt;
===What Happens Next?===&lt;br /&gt;
After the bug is reported, an email alert is sent to all applicable members of the security team who have subscribed to alerts from Bugzilla. Once this email is sent, a member of the team will take a look at the bug and attempt to confirm whether it is a security risk. We may ask for more information if we are not able to replicate the issue.&lt;br /&gt;
&lt;br /&gt;
Once the vulnerability is confirmed, the bug&#039;s status is changed from &amp;quot;Unconfirmed&amp;quot; to &amp;quot;New.&amp;quot; We will then attempt to locate a developer who has worked on the project and ask him or her to assist us in fixing the bug. Depending on the complexity, you may get multiple emails from Bugzilla as the security team member and the developer attempt to fix the issue.&lt;br /&gt;
&lt;br /&gt;
Once a fix has been developed, it often needs to progress through a development and stage environment before being pushed to production. Once the fix is running on the production environment and the vulnerability is confirmed to no longer exist, the bug will be marked Resolved -&amp;gt; Fixed.&lt;br /&gt;
&lt;br /&gt;
This process may take anywhere from a day to a few weeks to complete. During this time, please do not file duplicate bugs as it only slows down the progress of fixing the first. If you feel a bug is not being given the attention it deserves, feel free to leave a comment on the bug asking for an update. This will re-email everyone involved and can remind us of a bug we may have forgotten.&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/ReviewProcess&amp;diff=462886</id>
		<title>Security/ReviewProcess</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/ReviewProcess&amp;diff=462886"/>
		<updated>2012-08-21T18:30:33Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: /* Detailed Testing Procedures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains draft documentation of our security review processes.&lt;br /&gt;
&lt;br /&gt;
= Security Review Processes =&lt;br /&gt;
==Web Application Review Process==&lt;br /&gt;
Web applications vary dramatically in design and functionality making it difficult to create a single use-case checklist for security reviews. However, most applications undergo the following checks during the security review process.&lt;br /&gt;
&lt;br /&gt;
===General Web Application Review Process===&lt;br /&gt;
Many of these questions are taken from the secure coding guidelines page: https://wiki.mozilla.org/WebAppSec/Secure_Coding_Guidelines&lt;br /&gt;
&lt;br /&gt;
====Access Information====&lt;br /&gt;
* How is the application accessed?&lt;br /&gt;
* Is the application internal or publicly available?&lt;br /&gt;
* If it is internal, what mechanism prevents non-members from accessing it?&lt;br /&gt;
* Are there links to user-only resources displayed to non-users?&lt;br /&gt;
* Are login pages secured with SSL over HTTPS?&lt;br /&gt;
* If HTTPS is used, is Strict Transport Security set?&lt;br /&gt;
&lt;br /&gt;
====Infrastructure and Backends====&lt;br /&gt;
* What languages do the applications use?&lt;br /&gt;
* What database language is used if applicable?&lt;br /&gt;
* Are the running versions up to date?&lt;br /&gt;
* What server is it running on?&lt;br /&gt;
&lt;br /&gt;
====Accounts and Passwords====&lt;br /&gt;
* If the mechanism to prevent general access is a password, how is the signup process handled?&lt;br /&gt;
* How is account information stored?&lt;br /&gt;
* Are passwords properly stored within databases if applicable?&lt;br /&gt;
* Is a password policy in place?&lt;br /&gt;
* Are accounts locked-out after a number of invalid logins?&lt;br /&gt;
* Are passwords 8 characters or greater?&lt;br /&gt;
* Do passwords use both numbers and letters (and possibly symbols)?&lt;br /&gt;
* Is there a blacklist of common passwords?&lt;br /&gt;
* Do passwords expire after X days and require a reset?&lt;br /&gt;
* Are invalid logins logged?&lt;br /&gt;
* Is there a lockout after X invalid attempts?&lt;br /&gt;
* Is the error message for lockout generic (does not include if user/pass is valid)?&lt;br /&gt;
* How are password resets handled (i.e. email, security question, etc.)?&lt;br /&gt;
* Do emails sent after signup/reset contain a session link? (should not)&lt;br /&gt;
* Do email verification codes expire after one use or 8 hours?&lt;br /&gt;
* Is password reuse limited/prevented?&lt;br /&gt;
&lt;br /&gt;
====Session Management====&lt;br /&gt;
* How long are session cookies stored?&lt;br /&gt;
* Are session tokens 128-bit or greater?&lt;br /&gt;
* Is session ID token creation handled by the server (or cryptographically if locally)?&lt;br /&gt;
* Do authenticated sessions timeout after 15 minutes?&lt;br /&gt;
* Is the Secure Flag enabled for all set cookies?&lt;br /&gt;
* Is the HTTP-Only flag used to disable malicious script access to the session ID?&lt;br /&gt;
* Are new session ids created on login?&lt;br /&gt;
* On logout, are session ids invalidated?&lt;br /&gt;
&lt;br /&gt;
====Third-Party Resources====&lt;br /&gt;
* Are third-party resources used (i.e. JavaScript libraries, images, CSS, etc.)?&lt;br /&gt;
* Can those resources be trusted / are they from reputable sources?&lt;br /&gt;
* Is there a chance the resource could be compromised?&lt;br /&gt;
* Is it possible to host the resources locally to mitigate risks?&lt;br /&gt;
* Is a third-party responsible for storage of user data?&lt;br /&gt;
* Does the application connect with services like Facebook, Twitter, etc?&lt;br /&gt;
&lt;br /&gt;
====Data Handling====&lt;br /&gt;
* What kind of data is transferred between the user and the application?&lt;br /&gt;
* Is this data generated by the user or generated automatically?&lt;br /&gt;
* Can the data be trusted?&lt;br /&gt;
* How is the data sent to the application (i.e. JSON format, plain-text, GET/POST, etc.)?&lt;br /&gt;
* How is the data handled by the server/application?&lt;br /&gt;
* Can the data be manipulated in transit?&lt;br /&gt;
* What happens if the data is altered?&lt;br /&gt;
* What is done with the data once it is received (i.e. stored in a database, displayed to users)?&lt;br /&gt;
* Is any data storage done via cookies? If so, what kind of data is stored via this method?&lt;br /&gt;
&lt;br /&gt;
====Uploaded Data====&lt;br /&gt;
* Can the user upload data to the application?&lt;br /&gt;
* Are extensions, file size, file type (not only based on extension), etc. checked?&lt;br /&gt;
* Are files renamed upon upload?&lt;br /&gt;
* Is the correct content-type used?&lt;br /&gt;
&lt;br /&gt;
====Data Sensitivity====&lt;br /&gt;
* What kind of data is being stored and/or manipulated by the application?&lt;br /&gt;
* Does this data need to be encrypted in transit? In storage?&lt;br /&gt;
* What is the impact if this data is lost/stolen?&lt;br /&gt;
* Is secure/sensitive data sent over SSL?&lt;br /&gt;
&lt;br /&gt;
====Application Administration====&lt;br /&gt;
* Is there an administration console?&lt;br /&gt;
* Can it be accessed publicly?&lt;br /&gt;
* How is it secured if so?&lt;br /&gt;
* Are correct methods used to prevent admin actions from being performed outside of the admin console (i.e. using CSRF tokens)?&lt;br /&gt;
* Are there any configuration pages that should not be made public?&lt;br /&gt;
&lt;br /&gt;
====Security Coding Flaws====&lt;br /&gt;
* Have all user inputs been sanitized?&lt;br /&gt;
* Is a maximum size for data (input or uploads) defined?&lt;br /&gt;
* Do all URL variables pass through sanitization?&lt;br /&gt;
* Is data from databases escaped properly?&lt;br /&gt;
* Are CSRF tokens used to prevent POSTs from outside websites?&lt;br /&gt;
* If a database is used, are protections against SQL injection in place?&lt;br /&gt;
* Is validation done on the server side (not just client-side)?&lt;br /&gt;
* Is output encoded in addition to sanitization of input?&lt;br /&gt;
* Does the user ever send data to the OS level?&lt;br /&gt;
* Are x-frame options sent to “deny” or “sameorigin”?&lt;br /&gt;
* Is debug mode disabled?&lt;br /&gt;
&lt;br /&gt;
===Additional Resources===&lt;br /&gt;
Template for the above checks: https://docs.google.com/document/d/1SAzDuMwKUNN4_gdotqcv0oeZwLngjXjNYuZ2HZZaXp4/edit&lt;br /&gt;
&lt;br /&gt;
Also, please view the WebAppSec Wiki: https://wiki.mozilla.org/WebAppSec&lt;br /&gt;
&lt;br /&gt;
==WordPress Plugin Review Process==&lt;br /&gt;
Before being installed, all WordPress plugins must be reviewed by the security team. These reviews are simpler than full site reviews and ensure that the plugin being installed does not compromise the security of the blog/site.&lt;br /&gt;
&lt;br /&gt;
See the WebAppSec link for additional information about WordPress: https://wiki.mozilla.org/WebAppSec/Wordpress_Security_Review_Process&lt;br /&gt;
&lt;br /&gt;
===Common Attack Vectors===&lt;br /&gt;
The most common WordPress security issues present in plugins are cross-site scripting vulnerabilities (both persistent and reflected). Other vulnerabilities to check for include privilege escalation, remote code execution, logic errors, and SQL injection.&lt;br /&gt;
&lt;br /&gt;
===Review Process Overview===&lt;br /&gt;
A majority of the plugin review process involves manual inspection of the plugin and review of the plugin&#039;s code. The following steps outline a basic process followed when reviewing plugins.&lt;br /&gt;
* A test installation of WordPress is used (see Turnkey WordPress: http://www.turnkeylinux.org/wordpress)&lt;br /&gt;
** The WordPress version must match that of the blog on which the plugin will be installed.&lt;br /&gt;
* If the plugin is being installed on a high profile blog, a staging installation may already be available. It is best to test here to replicate the production environment as best as possible.&lt;br /&gt;
* The plugin to be tested is downloaded from WordPress using the most recent version available.&lt;br /&gt;
* Security testing is performed (see next section for detailed testing information).&lt;br /&gt;
* If any issues are detected, the developer is contacted and asked to release a fix.&lt;br /&gt;
* A blocking bug is created pertaining to the fix. If the developer does not respond within a reasonable time frame, our developers may fix the issue on a local installation.&lt;br /&gt;
&lt;br /&gt;
===Detailed Testing Procedures===&lt;br /&gt;
* Determine the functionality of the plugin. Most plugins add a set of features to the admin page, but some are much more complex.&lt;br /&gt;
** Do the features allow non-admin users to add data or enter input on the site?&lt;br /&gt;
** Is that data treated as unsafe (i.e. not used directly in SQL statements or reflected back to other users or admins)?&lt;br /&gt;
** Does the plugin alter the login process, add additional users, or grant additional rights to non-admins?&lt;br /&gt;
** If a plugin modifies post text (such as creating links out of certain words), does it do the same for user-comments?&lt;br /&gt;
*** This is dangerous - a plugin such as this should only allow admins to enter data that will be handled.&lt;br /&gt;
* View the settings page for the plugin and test the inputs for cross-site scripting and SQL injection vulnerabilities.&lt;br /&gt;
** Note that some plugins enable the use of unfiltered HTML within the admin page. This behavior is allowed unless the plugin also exposes this functionality to non-admins.&lt;br /&gt;
** Ensure that unfiltered HTML is being used in expected places. For example, unfiltered HTML may be allowed when editing posts, but some input boxes can be XSS&#039;ed with &amp;quot;/&amp;gt;&amp;lt;script&amp;gt;alert(1);&amp;lt;/script&amp;gt;. This breaks out of the settings input box and allows unfiltered code execution on the settings page.&lt;br /&gt;
* View the methods used to save settings. Some plugins use POST (desirable) and others use GET.&lt;br /&gt;
** Where GET is used, especially check all settings for potential XSS as an admin can be sent a link containing the XSS and it will be executed immediately (or following login).&lt;br /&gt;
** If POST is used, check for potential CSRF issues. A nonce should be used to protect the admin page from CSRF.&lt;br /&gt;
* View the code of the plugin itself (this can be done in WordPress by clicking Plugins &amp;gt; Editor and selecting the plugin).&lt;br /&gt;
** Check for all input accepted by the plugin ($_GET, $_REQUEST, $_POST).&lt;br /&gt;
** Fuzz all inputs for potential XSS and SQL injection vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
Do the varied nature of plugins, it is impossible to have a &amp;quot;one stop&amp;quot; checklist. Each plugin must be manually checked and the testing procedures altered depending on the functionality. The above process is a general guideline and does not apply to every plugin.&lt;br /&gt;
&lt;br /&gt;
= Security Review Documentation =&lt;br /&gt;
== Structure of a Security Review ==&lt;br /&gt;
&lt;br /&gt;
This document covers five distinct activities and the documentation they produce when a security review is performed.  Note that this guidance is prescriptive in that each component of a security review document should be produced, or a statement explaining why it wasn&#039;t should be included.&lt;br /&gt;
&lt;br /&gt;
The goal of this document is to ensure that the Security Assurance team has a consistent format for the documentation we produce without enforcing a strict structure on how security review and testing is performed.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
An architecture diagram illustrates how the various components of the service communicate with one another.&lt;br /&gt;
&lt;br /&gt;
The goal of the architecture diagram is to give the audience a high-level visual representation of how the different components of a system will interact together.  &lt;br /&gt;
&lt;br /&gt;
An example of this is the diagram below, which is from the old Mozilla F1 service.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.mozilla.org/images/thumb/7/78/F1design.png/392px-F1design.png Mozilla F1 Architecture Diagram]&lt;br /&gt;
&lt;br /&gt;
The F1 service had multiple components:&lt;br /&gt;
* a Firefox Add-on that hosted a pane loaded from the Mozilla F1 service that facilitated posting (&#039;sharing&#039;) content across multiple services&lt;br /&gt;
* a back-end that abstracted the &#039;sharing&#039; process such that a core set of common functions to facilitate easy incorporation of addition services without client updates&lt;br /&gt;
&lt;br /&gt;
Rather than providing a detailed assessment of how messages are passed between the various components, this diagram illustrates how the different components interact with one another, but not details about the interactions, or what data is shared between them.&lt;br /&gt;
&lt;br /&gt;
The goal of this diagram is to provide a concise overview of the system that provides a frame of reference when someone new to the system is reviewing supporting documentation or code.&lt;br /&gt;
&lt;br /&gt;
==== Key Attributes ====&lt;br /&gt;
* Clarity; brief descriptions of which components are communicating&lt;br /&gt;
* Illustrates the boundaries between different services&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples ====&lt;br /&gt;
*  [https://people.mozilla.com/~yboily/identity/assets/images-1/s31.b.jpeg BrowserID Protocol High Level]&lt;br /&gt;
*  [https://people.mozilla.com/~ckoenig/App-Marketplace.jpg Apps MarketPlace] TODO - Replace Me With A Simple Diagram!&lt;br /&gt;
&lt;br /&gt;
=== Detailed Application Diagram ===&lt;br /&gt;
A Detailed Application Diagram is essentially a Data-flow diagram;  a data flow diagram enumerates each application or service that is a component of a system, and illustrates each of the paths data can flow through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://wiki.mozilla.org/images/2/22/BrowserID-Threat-Model.png BrowserID Detailed Diagram]&lt;br /&gt;
&lt;br /&gt;
Note that a data-flow diagram is only one example of how this information.  The goal is to effectively communicate to the audience how data moves through the system, where different operations are performed, and if detailed enough, how different roles within the system can access different operations.&lt;br /&gt;
&lt;br /&gt;
When designing the detailed application diagram it can be useful to assemble a list of each of the subjects in a system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO - add references for subject/object/operations in relation to access control models.&lt;br /&gt;
&lt;br /&gt;
==== Key Attributes ====&lt;br /&gt;
* Clarity; labels for objects are brief, and contain clear references that can be used to cross-reference other documentation&lt;br /&gt;
* Detailed; ensure that all roles and operations are clearly presented&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples====&lt;br /&gt;
* [https://wiki.mozilla.org/images/b/bf/MozillaF1-Diagram.png Mozilla F1 Detailed Application Diagram]&lt;br /&gt;
* [https://wiki.mozilla.org/images/e/ee/BrowserID-Protocol.png BrowserID Protocol]&lt;br /&gt;
* [https://people.mozilla.com/~ckoenig/App-Marketplace.jpg AppStore Threat Model]&lt;br /&gt;
&lt;br /&gt;
=== Data-flow Enumeration ===&lt;br /&gt;
&lt;br /&gt;
Data-flow enumeration is an important supplement to the Detailed Application Diagram; it acts as a reference for someone reading the diagram to look up the nature of what information is associated with a call or request between two components.&lt;br /&gt;
&lt;br /&gt;
At a minimum, the flow enumeration should be a table indicating an identifier, subject, object, and the operation being performed.&lt;br /&gt;
&lt;br /&gt;
In the example below, an excerpt from the [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#1._Provisioning  BrowserID provisioning enumeration], the subject, object, and operation are labelled origin, destination, and description, respectively.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;fullwidth-table&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Origin&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Destination&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1.A||Relying Party||Implementation Provider|| An interaction with the Relying party invokes the Implementation Provider (IP).&lt;br /&gt;
|-&lt;br /&gt;
|1.B||Implementation Provider||Identity Authority||The IP either has an expired certificate, or no certificate, and directs the client to an Identity Authority landing page for authentication.  This authentication process is out of scope of the protocol, and implementation dependent.&lt;br /&gt;
|-&lt;br /&gt;
|1.C||Identity Authority||Identity Authority||Code from the IP landing page invokes genKeyPair() to generate a keypair.&lt;br /&gt;
|-&lt;br /&gt;
|1.D||Identity Authority||Implementation Provider||The IP saves the keypair in the client&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In addition to including the subject, object, operation columns, it can be helpful to include an explicit list of fields which are considered sensitive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples ====&lt;br /&gt;
* [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#1._Provisioning BrowserID Data-flow Enumeration]&lt;br /&gt;
&lt;br /&gt;
=== Threat Analysis ===&lt;br /&gt;
&lt;br /&gt;
When performing a security review of an application one of the most important components is a threat analysis.  There is a great deal of documentation on how to perform threat analysis, and a number of different techniques that can be used:&lt;br /&gt;
&lt;br /&gt;
* [https://www.owasp.org/index.php/Threat_Risk_Modeling OWASP Threat Risk Modelling]&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/security/aa570413 Microsoft Application Threat Modelling]&lt;br /&gt;
* [http://csrc.nist.gov/publications/nistpubs/800-30/sp800-30.pdf NIST Risk Management Guide][pdf]&lt;br /&gt;
&lt;br /&gt;
For the purposes of a Mozilla Security Review, the means by which someone identifies the threats and risks associated with an application is important, but not specified.  If you have questions about how to perform this type of analysis, please contact a member of our team!  &lt;br /&gt;
&lt;br /&gt;
The resulting threat analysis should be formatted in a clear format, including the following details:&lt;br /&gt;
&lt;br /&gt;
* ID - a identifier for the threat&lt;br /&gt;
* Title - a concise description of the threat&lt;br /&gt;
* Threat - a description of the threat&lt;br /&gt;
* Mitigations - a recommendation for a control that can be implemented [1]&lt;br /&gt;
* Threat Agent - a list of the potential actors considered that would exploit a vulnerability.&lt;br /&gt;
* Notes - Related comments that contribute to the analysis, but don&#039;t belong in other columns&lt;br /&gt;
* Rating - A qualitative scoring for a vulnerability in the context of this application [2]&lt;br /&gt;
* Impact - A qualitative score representing the impact should a vulnerability be exploited&lt;br /&gt;
* Likelihood - A qualitative score representing the likelihood of a vulnerability being exploited. [3]&lt;br /&gt;
&lt;br /&gt;
See [https://wiki.mozilla.org/Security/RiskRatings Risk Ratings] for details of how to calculate the qualitative scores.&lt;br /&gt;
&lt;br /&gt;
TODO - Glossary Threat, Threat Agent, Vulnerability, Exploit&lt;br /&gt;
[1] In the case of a threat analysis that contains multiple threats that can be resolved by one or more different controls it may be beneficial to include a separate control table, and list references to controls in that table instead.&lt;br /&gt;
[2] The rating is calculated by multiplying the impact by the likelihood.  This is a naive method, but it&#039;s what we have!&lt;br /&gt;
[3] In the case where different threat agents have different likelihoods, list the likelihoods highest to lowest, in the same order as the threat agents.&lt;br /&gt;
&lt;br /&gt;
Below is an excerpt from the [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#Threat_Model BrowserID Threat Analysis]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;fullwidth-table sortable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Title&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Threat&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Proposed Mitigations&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Threat Agent&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Rating&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Likelihood&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Impact&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 1||SIA may introduce compliance issues||Operating a Secondary Identity Authority may induce compliance requirements with regards to logging user information||Part of the goal of BrowserID is to have Primary Identity Authorities take on this risk as part of their other operations.  This can be somewhat mitigated by eliminating support for the webfinger verification process.||Governments, Lawyers||12||3||Governments and other legal actors have the ability to request  information from us, either through subpoenas, NSLs, etc.  While we hold information that can link user identities to services this information will be a source of risk.||4 – Reputation||Although we are required to comply, and Mozilla would fight such a request to the degree permitted, we would still receive negative press.&lt;br /&gt;
|-&lt;br /&gt;
| 2||Webfinger Information Leak||Use of the webfinger service for verification discloses each authentication attempt from the Relying Party to the Identity Authority||Implement verification using certificates||Malicious Identity Authority||25||5||This information disclosure is a part of the protocol.||5 – Privacy||This is probably a clear violation of our privacy policies.&lt;br /&gt;
|-&lt;br /&gt;
| 3||Chrome Code Injection||Attacker controlled parameters could permit injection of script into browser chrome.||Ensure that any data controlled by the user or relying party is emitted using output encoding.||Malicious Relying Party, Malicious User, Malicious Identity Authority||4||1||Code review and testing should prevent this occuring.  The technical complexity of this attack is higher than a vanilla XSS.||4 – User||This gives an attacker the ability to execute code in the context of browser chrome.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples ====&lt;br /&gt;
* Mozilla F1 Threats [https://wiki.mozilla.org/Security/Reviews/F1#Threat_Model]&lt;br /&gt;
* BrowserID Threats [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#Threat_Model]&lt;br /&gt;
&lt;br /&gt;
=== Security Testing ===&lt;br /&gt;
&lt;br /&gt;
The security test plan is a brief explanation of security testing that should be performed, and should include an explanation of what tasks are to be performed, and the approximate amount of time spent performing those tasks.&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=WebAppSec/Filing_In_Bugzilla&amp;diff=462867</id>
		<title>WebAppSec/Filing In Bugzilla</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=WebAppSec/Filing_In_Bugzilla&amp;diff=462867"/>
		<updated>2012-08-21T18:11:57Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains, step-by-step, how to file a web security bug in Bugzilla using all the proper flags, keywords, whitboard tags, etc.&lt;br /&gt;
&lt;br /&gt;
==Filing a Web Security Bug in Bugzilla==&lt;br /&gt;
===Selecting a Product and Component===&lt;br /&gt;
Begin by opening a new bug: https://bugzilla.mozilla.org/enter_bug.cgi&lt;br /&gt;
&lt;br /&gt;
Type the affected hostname (e.g. &amp;quot;blog.mozilla.com&amp;quot;) into the search box at the top of the page. The box will autocomplete your search with available options. If no result is found, you can search manually or file a bug under &amp;quot;Other.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To file manually, most website bugs will be filed in &amp;quot;Other Products&amp;quot; at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[Image:BugzillaProcess0.png]]&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Websites&amp;quot; section under &amp;quot;Other&amp;quot; contains most sites.&lt;br /&gt;
&lt;br /&gt;
[[Image:BugzillaProcess1.png|700px]]&lt;br /&gt;
&lt;br /&gt;
Next, select a component from the list. If the website with the vulnerability is not listed, select &amp;quot;Other.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Image:BugzillaProcess2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
===Provide a Summary===&lt;br /&gt;
Provide a descriptive summary of the bug. Sample titles include:&lt;br /&gt;
* XSS in getpersonas.mozilla.com ID Parameter&lt;br /&gt;
* mozilla.org CSRF vulnerability on Profile Page&lt;br /&gt;
&lt;br /&gt;
Check the list of similar bugs that are found and try to make sure the bug has not yet been reported.&lt;br /&gt;
&lt;br /&gt;
===Enter a Description===&lt;br /&gt;
Provide as much information about the bug as possible. This should include:&lt;br /&gt;
* A full URL of the vulnerable page&lt;br /&gt;
* Any accounts or user profiles used to test the vulnerability&lt;br /&gt;
* The vulnerable parameter if applicable&lt;br /&gt;
* Tests you have used to verify the issue&lt;br /&gt;
* The payload used if applicable&lt;br /&gt;
** For example, if the issue is XSS, please provide the exact XSS payload you used&lt;br /&gt;
* What the expected behavior is&lt;br /&gt;
* Any other information that could be useful in reproducing the bug&lt;br /&gt;
&lt;br /&gt;
===Setting Security Flags===&lt;br /&gt;
Security flags are used to keep sensitive bugs hidden until the problem is resolved. This is done to protect our websites and users from attack during the time it takes to fix an issue. Marking a bug as security sensitive will still allow you to see updates to the bug, it will simply hide it from the public.&lt;br /&gt;
&lt;br /&gt;
For website vulnerabilities, please check the following box (note that you may need to click &amp;quot;Show Advanced Fields&amp;quot; to see it):&lt;br /&gt;
* Many users could be harmed by this security problem: it should be kept hidden from the public until it is resolved.&lt;br /&gt;
&lt;br /&gt;
If you are in the Websites group for Mozilla, you may also see another checkbox which can be selected:&lt;br /&gt;
* Security-Sensitive Websites Bug&lt;br /&gt;
&lt;br /&gt;
Checking one of these boxes is sufficient to hide the security issue.&lt;br /&gt;
&lt;br /&gt;
===Optional Information===&lt;br /&gt;
The following options will further help the security team respond to your bug, but are not required for a basic bug report.&lt;br /&gt;
&lt;br /&gt;
====Additional Information====&lt;br /&gt;
For the &amp;quot;Version&amp;quot; drop-down, leave &amp;quot;unspecified&amp;quot; selected unless the vulnerability affects a specific version of Firefox. Change &amp;quot;Operating System&amp;quot; to &amp;quot;All&amp;quot; unless the vulnerability affects only one version of an OS. The same is true for &amp;quot;Hardware.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Selecting a Severity====&lt;br /&gt;
For the &amp;quot;Severity&amp;quot; drop-down box, use the ratings listed on the WebAppSec Wiki here to determine a rating: [https://wiki.mozilla.org/WebAppSec/Web_App_Severity_Ratings#Rating WebAppSec Wiki]&lt;br /&gt;
&lt;br /&gt;
Typically, XSS uses &amp;quot;Critical&amp;quot; and vulnerabilities that expose information are &amp;quot;Major.&amp;quot; Any SQL injection attacks are considered a &amp;quot;Blocker.&amp;quot; Please use the ratings list to determine the exact rating for the vulnerability.&lt;br /&gt;
&lt;br /&gt;
====Attachments====&lt;br /&gt;
Please include attachments such as:&lt;br /&gt;
* Screenshots of the issue (such as an XSS alert box executing)&lt;br /&gt;
* A POC script&lt;br /&gt;
* A demo video&lt;br /&gt;
&lt;br /&gt;
Please do not include videos or attachments that explain the issue generically (for example, a YouTube video explaining what XSS is).&lt;br /&gt;
&lt;br /&gt;
====Adding Keywords====&lt;br /&gt;
Keywords assist the security team in filtering and searching for bugs. Properly supplying keywords will help a bug receive the correct attention. A full list of keywords is available here: https://bugzilla-stage.mozilla.org/describekeywords.cgi but the only ones applicable to website security bugs are:&lt;br /&gt;
* sec-critical&lt;br /&gt;
* sec-high&lt;br /&gt;
* sec-moderate&lt;br /&gt;
* sec-low&lt;br /&gt;
* sec-other&lt;br /&gt;
&lt;br /&gt;
====Whiteboard Tags====&lt;br /&gt;
As with keywords, whiteboard tags assist the security team is sorting and categorizing security bugs. This page lists the available whiteboard tags: https://wiki.mozilla.org/WebAppSec/Web_App_Severity_Ratings&lt;br /&gt;
&lt;br /&gt;
Be sure to include both the severity tag as well as the infrasec tag.&lt;br /&gt;
&lt;br /&gt;
As an example, a reflected XSS vulnerability would have whiteboard tags: [ws:high][infrasec:xss]&lt;br /&gt;
&lt;br /&gt;
====Additional Options====&lt;br /&gt;
A URL may be provided that links to the vulnerable page.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Blocks&amp;quot; and &amp;quot;Depends On&amp;quot; options may be set if the submitted bug either blocks another bug with a known Bugzilla bug number or relies on another bug before it can be fixed. In the case of web security bugs, these options are often not set unless the bug is discovered during a security review, in which case it blocks the original review request bug.&lt;br /&gt;
&lt;br /&gt;
===What Happens Next?===&lt;br /&gt;
After the bug is reported, an email alert is sent to all applicable members of the security team who have subscribed to alerts from Bugzilla. Once this email is sent, a member of the team will take a look at the bug and attempt to confirm whether it is a security risk. We may ask for more information if we are not able to replicate the issue.&lt;br /&gt;
&lt;br /&gt;
Once the vulnerability is confirmed, the bug&#039;s status is changed from &amp;quot;Unconfirmed&amp;quot; to &amp;quot;New.&amp;quot; We will then attempt to locate a developer who has worked on the project and ask him or her to assist us in fixing the bug. Depending on the complexity, you may get multiple emails from Bugzilla as the security team member and the developer attempt to fix the issue.&lt;br /&gt;
&lt;br /&gt;
Once a fix has been developed, it often needs to progress through a development and stage environment before being pushed to production. Once the fix is running on the production environment and the vulnerability is confirmed to no longer exist, the bug will be marked Resolved -&amp;gt; Fixed.&lt;br /&gt;
&lt;br /&gt;
This process may take anywhere from a day to a few weeks to complete. During this time, please do not file duplicate bugs as it only slows down the progress of fixing the first. If you feel a bug is not being given the attention it deserves, feel free to leave a comment on the bug asking for an update. This will re-email everyone involved and can remind us of a bug we may have forgotten.&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=WebAppSec/Filing_In_Bugzilla&amp;diff=462537</id>
		<title>WebAppSec/Filing In Bugzilla</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=WebAppSec/Filing_In_Bugzilla&amp;diff=462537"/>
		<updated>2012-08-20T20:49:06Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains, step-by-step, how to file a web security bug in Bugzilla using all the proper flags, keywords, whitboard tags, etc.&lt;br /&gt;
&lt;br /&gt;
==Filing a Web Security Bug in Bugzilla==&lt;br /&gt;
===Selecting a Product===&lt;br /&gt;
Begin by opening a new bug: https://bugzilla.mozilla.org/enter_bug.cgi&lt;br /&gt;
&lt;br /&gt;
Most website bugs will be filed in &amp;quot;Other Products&amp;quot; at the bottom of the page.&lt;br /&gt;
&lt;br /&gt;
[[Image:BugzillaProcess0.png]]&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Websites&amp;quot; section under &amp;quot;Other&amp;quot; contains most sites.&lt;br /&gt;
&lt;br /&gt;
[[Image:BugzillaProcess1.png|700px]]&lt;br /&gt;
&lt;br /&gt;
===Selecting a Component===&lt;br /&gt;
Next, select a component from the list. If the website with the vulnerability is not listed, select &amp;quot;Other.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Image:BugzillaProcess2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
===Additional Information===&lt;br /&gt;
For the &amp;quot;Version&amp;quot; drop-down, leave &amp;quot;unspecified&amp;quot; selected unless the vulnerability affects a specific version of Firefox. Change &amp;quot;Operating System&amp;quot; to &amp;quot;All&amp;quot; unless the vulnerability affects only one version of an OS. The same is true for &amp;quot;Hardware.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Selecting a Severity===&lt;br /&gt;
For the &amp;quot;Severity&amp;quot; drop-down box, use the ratings listed on the WebAppSec Wiki here to determine a rating: [https://wiki.mozilla.org/WebAppSec/Web_App_Severity_Ratings#Rating WebAppSec Wiki]&lt;br /&gt;
&lt;br /&gt;
Typically, XSS uses &amp;quot;Critical&amp;quot; and vulnerabilities that expose information are &amp;quot;High.&amp;quot; Any SQL injection attacks are considered a &amp;quot;Blocker.&amp;quot; Please use the ratings list to determine the exact rating for the vulnerability.&lt;br /&gt;
&lt;br /&gt;
===Provide a Summary===&lt;br /&gt;
Provide a descriptive summary of the bug. Sample titles include:&lt;br /&gt;
* XSS in getpersonas.mozilla.com ID Parameter&lt;br /&gt;
* mozilla.org CSRF vulnerability on Profile Page&lt;br /&gt;
&lt;br /&gt;
Check the list of similar bugs that are found and try to make sure the bug has not yet been reported.&lt;br /&gt;
&lt;br /&gt;
===Enter a Description===&lt;br /&gt;
Provide as much information about the bug as possible. This should include:&lt;br /&gt;
* A full URL of the vulnerable page&lt;br /&gt;
* Any accounts or user profiles used to test the vulnerability&lt;br /&gt;
* The vulnerable parameter if applicable&lt;br /&gt;
* Tests you have used to verify the issue&lt;br /&gt;
* The payload used if applicable&lt;br /&gt;
** For example, if the issue is XSS, please provide the exact XSS payload you used&lt;br /&gt;
* What the expected behavior is&lt;br /&gt;
* Any other information that could be useful in reproducing the bug&lt;br /&gt;
&lt;br /&gt;
===Attachments===&lt;br /&gt;
Please include attachments such as:&lt;br /&gt;
* Screenshots of the issue (such as an XSS alert box executing)&lt;br /&gt;
* A POC script&lt;br /&gt;
* A demo video&lt;br /&gt;
&lt;br /&gt;
Please do not include videos or attachments that explain the issue generically (for example, a YouTube video explaining what XSS is).&lt;br /&gt;
&lt;br /&gt;
===Setting Security Flags===&lt;br /&gt;
Security flags are used to keep sensitive bugs hidden until the problem is resolved. This is done to protect our websites and users from attack during the time it takes to fix an issue. Marking a bug as security sensitive will still allow you to see updates to the bug, it will simply hide it from the public.&lt;br /&gt;
&lt;br /&gt;
For website vulnerabilities, please check the following boxes (note that you may need to click &amp;quot;Show Advanced Fields&amp;quot; to see them all):&lt;br /&gt;
* Security-Sensitive Websites Bug&lt;br /&gt;
* Many users could be harmed by this security problem: it should be kept hidden from the public until it is resolved.&lt;br /&gt;
&lt;br /&gt;
===Adding Keywords===&lt;br /&gt;
Keywords assist the security team in filtering and searching for bugs. Properly supplying keywords will help a bug receive the correct attention. A full list of keywords is available here: https://bugzilla-stage.mozilla.org/describekeywords.cgi but the only ones applicable to website security bugs are:&lt;br /&gt;
* sec-critical&lt;br /&gt;
* sec-high&lt;br /&gt;
* sec-moderate&lt;br /&gt;
* sec-low&lt;br /&gt;
* sec-other&lt;br /&gt;
&lt;br /&gt;
===Whiteboard Tags===&lt;br /&gt;
As with keywords, whiteboard tags assist the security team is sorting and categorizing security bugs. This page lists the available whiteboard tags: https://wiki.mozilla.org/WebAppSec/Web_App_Severity_Ratings&lt;br /&gt;
&lt;br /&gt;
Be sure to include both the severity tag as well as the infrasec tag.&lt;br /&gt;
&lt;br /&gt;
As an example, a reflected XSS vulnerability would have whiteboard tags: [ws:high][infrasec:xss]&lt;br /&gt;
&lt;br /&gt;
===Additional Options===&lt;br /&gt;
A URL may be provided that links to the vulnerable page.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Blocks&amp;quot; and &amp;quot;Depends On&amp;quot; options may be set if the submitted bug either blocks another bug with a known Bugzilla bug number or relies on another bug before it can be fixed. In the case of web security bugs, these options are often not set unless the bug is discovered during a security review, in which case it blocks the original review request bug.&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=File:BugzillaProcess2.png&amp;diff=462505</id>
		<title>File:BugzillaProcess2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=File:BugzillaProcess2.png&amp;diff=462505"/>
		<updated>2012-08-20T19:59:51Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=File:BugzillaProcess0.png&amp;diff=462498</id>
		<title>File:BugzillaProcess0.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=File:BugzillaProcess0.png&amp;diff=462498"/>
		<updated>2012-08-20T19:53:37Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: Process for submitting websites security bugs in bugzilla&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Process for submitting websites security bugs in bugzilla&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=File:BugzillaProcess1.png&amp;diff=462495</id>
		<title>File:BugzillaProcess1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=File:BugzillaProcess1.png&amp;diff=462495"/>
		<updated>2012-08-20T19:49:56Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: The bugzilla process for website security bugs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The bugzilla process for website security bugs&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=WebAppSec&amp;diff=462489</id>
		<title>WebAppSec</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=WebAppSec&amp;diff=462489"/>
		<updated>2012-08-20T19:39:13Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: /* Mozilla Web Application Security */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Mozilla Web Application Security  =&lt;br /&gt;
&lt;br /&gt;
Welcome to the home page for Mozilla Web Application Security. This page will provide security information related to Mozilla hosted web applications and web services. &lt;br /&gt;
&lt;br /&gt;
== Secure Development Guidance  ==&lt;br /&gt;
&lt;br /&gt;
[[WebAppSec/Web_App_Severity_Ratings|Web Application Security Severity Ratings]]&lt;br /&gt;
&lt;br /&gt;
[[WebAppSec/Secure_Coding_Guidelines|Secure Coding Guidelines]]&lt;br /&gt;
&lt;br /&gt;
[[WebAppSec/Secure_Coding_QA_Checklist|Secure Coding QA Checklist]]&lt;br /&gt;
&lt;br /&gt;
== Request a Security Review ==&lt;br /&gt;
Are you releasing a Mozilla web application or service? If so, the Mozilla infrasec team can review the code and running application for security flaws.&lt;br /&gt;
&lt;br /&gt;
[[WebAppSec/Security_Review_Request|Security Review Request]]&lt;br /&gt;
&lt;br /&gt;
[[WebAppSec/Wordpress_Security_Review_Process|Wordpress Theme or Plugin - Security Install Process]]&lt;br /&gt;
&lt;br /&gt;
==Filing a Web Security Bug==&lt;br /&gt;
For instructions regarding the use of Bugzilla to file a web security bug, visit: [[WebAppSec/Filing_In_Bugzilla|Filing a Web Security Bug in Bugzilla]]&lt;br /&gt;
&lt;br /&gt;
== Presentations  ==&lt;br /&gt;
Infrastructure security will be presenting on various security topics on a regular basis. These courses are free and open to anyone that would like to attend.  For those that are remote, please join us on air.mozilla.org to remotely watch the presentation.&lt;br /&gt;
&lt;br /&gt;
===Schedule-2012===&lt;br /&gt;
&lt;br /&gt;
===Schedule-2011-Archive===&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;April 23, 2011 - Stanford Open Source Bootcamp&#039;&#039;&#039;====&lt;br /&gt;
* Topic: Securing Web Applications through Hands On Security Hacking &lt;br /&gt;
* Slides: [http://people.mozilla.org/~mcoates/WebAppSec-Training.html Securing Web Applications]&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;[https://wiki.mozilla.org/WebAppSec/Presentations/2011-07-14-MobileHacking July 14, 2011 - Mobile Hacking]&#039;&#039;&#039;==== &lt;br /&gt;
* Topic: Blake Turrentine presents Mobile Hacking courseware for BlackHat 2011&lt;br /&gt;
* Time: 6pm-9:30pm Pacific&lt;br /&gt;
* Location: Mountain View (10 Forward) (Sorry, no streaming)&lt;br /&gt;
* Remote Participation: No, lab element requires in-person attendance&lt;br /&gt;
* Limited Space - [https://wiki.mozilla.org/WebAppSec/Presentations/2011-07-14-MobileHacking#RSVP RSVP Required]&lt;br /&gt;
====&#039;&#039;&#039;July 20, 2011 - Hands-On Hacking Brownbag - Cross Site Scripting&#039;&#039;&#039; ====&lt;br /&gt;
* Topic: Cross Site Scripting&lt;br /&gt;
* Time: 12pm-1pm Pacific&lt;br /&gt;
* Location: Mountain View (10 Forward)&lt;br /&gt;
* Remote Participation: Yes, streaming via air.mozilla.org&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;Important&#039;&#039;&#039;&#039;&#039; Lab Setup - Please setup your VM test instance prior to the session - [http://people.mozilla.org/~mcoates/WebSecurityLab.html#installation instructions]&lt;br /&gt;
* 10 minute online video - [http://www.youtube.com/watch?v=_Z9RQSnf8-g&amp;amp;feature=channel_video_title Cross Site Scripting]&lt;br /&gt;
* Archived [http://www.slideshare.net/michael_coates/cross-site-scripting-mozilla-security-learning-center Slides]&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;August 16, 2011 - Hands-On Hacking Brownbag - SQL Injection&#039;&#039;&#039;====&lt;br /&gt;
* Topic: SQL Injection&lt;br /&gt;
* Time: 12pm-1pm Pacific&lt;br /&gt;
* Location: Mountain View (10 Forward) &lt;br /&gt;
* Remote Participation: Yes, streaming via [http://air.mozilla.org air.mozilla.org]&lt;br /&gt;
* Lab Setup - Please setup your VM test instance prior to the session - [http://people.mozilla.org/~mcoates/WebSecurityLab.html instructions]&lt;br /&gt;
* 10 minute online video - [http://www.youtube.com/watch?v=pypTYPaU7mM&amp;amp;feature=channel_video_title  Injection Attacks]&lt;br /&gt;
* Archived [http://www.slideshare.net/michael_coates/sql-injection-mozilla-security-learning-center Slides]&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;August 25, 2011 - OWASP Bay Area Chapter Meeting &#039;&#039;&#039;====&lt;br /&gt;
* Topic: Application Security Topics&lt;br /&gt;
** 6:00 PM - 6:30 PM .............Check-in, registration, networking&lt;br /&gt;
** 6:30 PM – 6:35 PM ........... Welcome Remarks/Agenda - Mandeep Khera  &lt;br /&gt;
** 6:35 PM - 7:45 PM ............ Enabling Browser Security in Web Applications- Michael Coates, Mozilla &lt;br /&gt;
** 7:45 PM – 8:30 PM…......... Blackhat spam SEO - Julien Sobrier, Zscaler &lt;br /&gt;
* Time: 6pm-9:30pm Pacific&lt;br /&gt;
* Location: Mountain View (10 Forward) &lt;br /&gt;
* Remote Participation: Yes, streaming via [http://air.mozilla.org air.mozilla.org]&lt;br /&gt;
* RSVP Required (for in person) [http://www.regonline.com/owaspsiliconvalleychaptermeeting RSVP Here]&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;September 21, 2011 - CEF Logging for Attack Aware Applications&#039;&#039;&#039;====&lt;br /&gt;
* Topic: Implementing CEF logging to improve the security of web based applications&lt;br /&gt;
* Time: 12pm-1pm Pacific&lt;br /&gt;
* Location: Mountain View (10 Forward) &lt;br /&gt;
* Remote Participation: Yes, streaming via [http://air.mozilla.org air.mozilla.org]&lt;br /&gt;
* Archived Video , Slides - Will be available after the session&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;December 5, 2011 - Cross-Site Request Forgery and other cross domain technologies&#039;&#039;&#039;====&lt;br /&gt;
* Topic: Dealing with CSRF, the talk will also cover Cross-Origin Resource Sharing and the postMessage API&lt;br /&gt;
* Time: 12pm-1pm Pacific&lt;br /&gt;
* Location: Mountain View (10 Forward) &lt;br /&gt;
* Remote Participation: Yes, streaming via [http://air.mozilla.org air.mozilla.org]&lt;br /&gt;
* Archived Video , Slides - Will be available after the session&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;December 14, 2011 - What You See and What You Get - An Attacker&#039;s perspective&#039;&#039;&#039;====&lt;br /&gt;
* Topic: The talk covers how an attacker views a software system, how that differs from more common perspectives and what that teaches us about how to make secure products&lt;br /&gt;
* Time: 5-6pm GMT&lt;br /&gt;
* Location: Adsetts Learning Center (room 6619), Sheffield Hallam University, UK &lt;br /&gt;
* Remote Participation: No&lt;br /&gt;
* Archived Video - to be made available soon&lt;br /&gt;
&lt;br /&gt;
====Future Topics====&lt;br /&gt;
* Future topics: Content Security Policy, Strict Transport Security, Clickjacking &amp;amp; X-Frame-Options&lt;br /&gt;
* Hands-On Hacking Classes Planned For Each Month&lt;br /&gt;
* Submit an idea for a topic or brownbag to webappsec@mozilla.org&lt;br /&gt;
&lt;br /&gt;
== Security Learning Materials ==&lt;br /&gt;
=== Online Videos ===&lt;br /&gt;
* [http://www.youtube.com/user/AppsecTutorialSeries 10 Minute Security Training Videos] (More to come)&lt;br /&gt;
** [http://www.youtube.com/watch?v=CDbWvEwBBxo Application Security Basics]&lt;br /&gt;
** [http://www.youtube.com/watch?v=pypTYPaU7mM&amp;amp;feature=related Injection Attacks]&lt;br /&gt;
** [http://www.youtube.com/watch?v=_Z9RQSnf8-g&amp;amp;feature=channel_video_title Cross Site Scripting]&lt;br /&gt;
** Additional videos under development&lt;br /&gt;
=== Security Presentations ===&lt;br /&gt;
* [http://www.slideshare.net/michael_coates/cross-site-scripting-mozilla-security-learning-center Cross Site Scripting Basics]&lt;br /&gt;
* [http://www.slideshare.net/michael_coates/sql-injection-mozilla-security-learning-center SQL Injection Basics]&lt;br /&gt;
=== Security Guides ===&lt;br /&gt;
* [https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet XSS Prevention Cheat Sheet]&lt;br /&gt;
* [https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet SQL Prevention Cheat Sheet]&lt;br /&gt;
=== Good Reads===&lt;br /&gt;
* [https://www.owasp.org/index.php/Top_10_2010 OWASP Top 10 Application Security Risks]&lt;br /&gt;
&lt;br /&gt;
== Mozilla WebAppSec Mailing List ==&lt;br /&gt;
Interested in discussing web application security concerns and the impact on Mozilla web applications? Then this is the list for you. Please note, this is a public list and is not the appropriate channel to discuss open security vulnerabilities (please file a bug in bugzilla).&lt;br /&gt;
&lt;br /&gt;
webappsec@mozilla.org&lt;br /&gt;
&lt;br /&gt;
https://mail.mozilla.org/listinfo/webappsec&lt;br /&gt;
&lt;br /&gt;
Infrastructure Security Blog - http://blog.mozilla.com/webappsec/&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=WebAppSec/Filing_In_Bugzilla&amp;diff=462487</id>
		<title>WebAppSec/Filing In Bugzilla</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=WebAppSec/Filing_In_Bugzilla&amp;diff=462487"/>
		<updated>2012-08-20T19:37:15Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: Created page with &amp;quot;=Filing a Web Security Bug in Bugzilla= This page explains, step-by-step, how to file a web security bug in Bugzilla using all the proper flags, keywords, whitboard tags, etc.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Filing a Web Security Bug in Bugzilla=&lt;br /&gt;
This page explains, step-by-step, how to file a web security bug in Bugzilla using all the proper flags, keywords, whitboard tags, etc.&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=WebAppSec/Wordpress_Security_Review_Process&amp;diff=462486</id>
		<title>WebAppSec/Wordpress Security Review Process</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=WebAppSec/Wordpress_Security_Review_Process&amp;diff=462486"/>
		<updated>2012-08-20T19:28:11Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note: This document is maintained on the internal mana website at the following [https://mana.mozilla.org/wiki/display/INFRASEC/Wordpress+Enhancements+Security+Review+Process link]. This is a copy of that document.&lt;br /&gt;
&lt;br /&gt;
=Purpose=&lt;br /&gt;
&lt;br /&gt;
Document the security and installation process for wordpress enhancements including themes and plugins&lt;br /&gt;
&lt;br /&gt;
=Wordpress Theme or Plugin=&lt;br /&gt;
&lt;br /&gt;
* A mozillian finds/creates a new theme or plugin&lt;br /&gt;
* The Mozillian files a [https://wiki.mozilla.org/WebAppSec/Security_Review_Request security review request] for review of the theme/plugin&lt;br /&gt;
* Infrasec reviews the theme for security issues&lt;br /&gt;
* IT installs the theme *after* Infrasec okays it&lt;br /&gt;
* IT activate the theme on blog.mozilla.com&lt;br /&gt;
* The Mozillian can then pick out the new theme if you&#039;re a blog admin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Based on the quantity of security reviews and urgency of many projects please provide several weeks for this entire process.&lt;br /&gt;
&lt;br /&gt;
=Why Require a Security Review?=&lt;br /&gt;
&lt;br /&gt;
A surprising large number of cross site scripting vulnerabilities have been found within wordpress themes and plugins. This kind of vulnerability could allow an attacker to compromise users visiting the wordpress site, steal admin wordpress credentials or even rewrite the entire page.&lt;br /&gt;
&lt;br /&gt;
=The Review Process=&lt;br /&gt;
Please view our Security Review Process Wiki page here: https://wiki.mozilla.org/Security/ReviewProcess#WordPress_Plugin_Review_Process&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/ReviewProcess&amp;diff=462484</id>
		<title>Security/ReviewProcess</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/ReviewProcess&amp;diff=462484"/>
		<updated>2012-08-20T19:26:45Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: /* WordPress Plugin Review Process */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains draft documentation of our security review processes.&lt;br /&gt;
&lt;br /&gt;
= Security Review Processes =&lt;br /&gt;
==Web Application Review Process==&lt;br /&gt;
Web applications vary dramatically in design and functionality making it difficult to create a single use-case checklist for security reviews. However, most applications undergo the following checks during the security review process.&lt;br /&gt;
&lt;br /&gt;
===General Web Application Review Process===&lt;br /&gt;
Many of these questions are taken from the secure coding guidelines page: https://wiki.mozilla.org/WebAppSec/Secure_Coding_Guidelines&lt;br /&gt;
&lt;br /&gt;
====Access Information====&lt;br /&gt;
* How is the application accessed?&lt;br /&gt;
* Is the application internal or publicly available?&lt;br /&gt;
* If it is internal, what mechanism prevents non-members from accessing it?&lt;br /&gt;
* Are there links to user-only resources displayed to non-users?&lt;br /&gt;
* Are login pages secured with SSL over HTTPS?&lt;br /&gt;
* If HTTPS is used, is Strict Transport Security set?&lt;br /&gt;
&lt;br /&gt;
====Infrastructure and Backends====&lt;br /&gt;
* What languages do the applications use?&lt;br /&gt;
* What database language is used if applicable?&lt;br /&gt;
* Are the running versions up to date?&lt;br /&gt;
* What server is it running on?&lt;br /&gt;
&lt;br /&gt;
====Accounts and Passwords====&lt;br /&gt;
* If the mechanism to prevent general access is a password, how is the signup process handled?&lt;br /&gt;
* How is account information stored?&lt;br /&gt;
* Are passwords properly stored within databases if applicable?&lt;br /&gt;
* Is a password policy in place?&lt;br /&gt;
* Are accounts locked-out after a number of invalid logins?&lt;br /&gt;
* Are passwords 8 characters or greater?&lt;br /&gt;
* Do passwords use both numbers and letters (and possibly symbols)?&lt;br /&gt;
* Is there a blacklist of common passwords?&lt;br /&gt;
* Do passwords expire after X days and require a reset?&lt;br /&gt;
* Are invalid logins logged?&lt;br /&gt;
* Is there a lockout after X invalid attempts?&lt;br /&gt;
* Is the error message for lockout generic (does not include if user/pass is valid)?&lt;br /&gt;
* How are password resets handled (i.e. email, security question, etc.)?&lt;br /&gt;
* Do emails sent after signup/reset contain a session link? (should not)&lt;br /&gt;
* Do email verification codes expire after one use or 8 hours?&lt;br /&gt;
* Is password reuse limited/prevented?&lt;br /&gt;
&lt;br /&gt;
====Session Management====&lt;br /&gt;
* How long are session cookies stored?&lt;br /&gt;
* Are session tokens 128-bit or greater?&lt;br /&gt;
* Is session ID token creation handled by the server (or cryptographically if locally)?&lt;br /&gt;
* Do authenticated sessions timeout after 15 minutes?&lt;br /&gt;
* Is the Secure Flag enabled for all set cookies?&lt;br /&gt;
* Is the HTTP-Only flag used to disable malicious script access to the session ID?&lt;br /&gt;
* Are new session ids created on login?&lt;br /&gt;
* On logout, are session ids invalidated?&lt;br /&gt;
&lt;br /&gt;
====Third-Party Resources====&lt;br /&gt;
* Are third-party resources used (i.e. JavaScript libraries, images, CSS, etc.)?&lt;br /&gt;
* Can those resources be trusted / are they from reputable sources?&lt;br /&gt;
* Is there a chance the resource could be compromised?&lt;br /&gt;
* Is it possible to host the resources locally to mitigate risks?&lt;br /&gt;
* Is a third-party responsible for storage of user data?&lt;br /&gt;
* Does the application connect with services like Facebook, Twitter, etc?&lt;br /&gt;
&lt;br /&gt;
====Data Handling====&lt;br /&gt;
* What kind of data is transferred between the user and the application?&lt;br /&gt;
* Is this data generated by the user or generated automatically?&lt;br /&gt;
* Can the data be trusted?&lt;br /&gt;
* How is the data sent to the application (i.e. JSON format, plain-text, GET/POST, etc.)?&lt;br /&gt;
* How is the data handled by the server/application?&lt;br /&gt;
* Can the data be manipulated in transit?&lt;br /&gt;
* What happens if the data is altered?&lt;br /&gt;
* What is done with the data once it is received (i.e. stored in a database, displayed to users)?&lt;br /&gt;
* Is any data storage done via cookies? If so, what kind of data is stored via this method?&lt;br /&gt;
&lt;br /&gt;
====Uploaded Data====&lt;br /&gt;
* Can the user upload data to the application?&lt;br /&gt;
* Are extensions, file size, file type (not only based on extension), etc. checked?&lt;br /&gt;
* Are files renamed upon upload?&lt;br /&gt;
* Is the correct content-type used?&lt;br /&gt;
&lt;br /&gt;
====Data Sensitivity====&lt;br /&gt;
* What kind of data is being stored and/or manipulated by the application?&lt;br /&gt;
* Does this data need to be encrypted in transit? In storage?&lt;br /&gt;
* What is the impact if this data is lost/stolen?&lt;br /&gt;
* Is secure/sensitive data sent over SSL?&lt;br /&gt;
&lt;br /&gt;
====Application Administration====&lt;br /&gt;
* Is there an administration console?&lt;br /&gt;
* Can it be accessed publicly?&lt;br /&gt;
* How is it secured if so?&lt;br /&gt;
* Are correct methods used to prevent admin actions from being performed outside of the admin console (i.e. using CSRF tokens)?&lt;br /&gt;
* Are there any configuration pages that should not be made public?&lt;br /&gt;
&lt;br /&gt;
====Security Coding Flaws====&lt;br /&gt;
* Have all user inputs been sanitized?&lt;br /&gt;
* Is a maximum size for data (input or uploads) defined?&lt;br /&gt;
* Do all URL variables pass through sanitization?&lt;br /&gt;
* Is data from databases escaped properly?&lt;br /&gt;
* Are CSRF tokens used to prevent POSTs from outside websites?&lt;br /&gt;
* If a database is used, are protections against SQL injection in place?&lt;br /&gt;
* Is validation done on the server side (not just client-side)?&lt;br /&gt;
* Is output encoded in addition to sanitization of input?&lt;br /&gt;
* Does the user ever send data to the OS level?&lt;br /&gt;
* Are x-frame options sent to “deny” or “sameorigin”?&lt;br /&gt;
* Is debug mode disabled?&lt;br /&gt;
&lt;br /&gt;
===Additional Resources===&lt;br /&gt;
Template for the above checks: https://docs.google.com/document/d/1SAzDuMwKUNN4_gdotqcv0oeZwLngjXjNYuZ2HZZaXp4/edit&lt;br /&gt;
&lt;br /&gt;
Also, please view the WebAppSec Wiki: https://wiki.mozilla.org/WebAppSec&lt;br /&gt;
&lt;br /&gt;
==WordPress Plugin Review Process==&lt;br /&gt;
Before being installed, all WordPress plugins must be reviewed by the security team. These reviews are simpler than full site reviews and ensure that the plugin being installed does not compromise the security of the blog/site.&lt;br /&gt;
&lt;br /&gt;
See the WebAppSec link for additional information about WordPress: https://wiki.mozilla.org/WebAppSec/Wordpress_Security_Review_Process&lt;br /&gt;
&lt;br /&gt;
===Common Attack Vectors===&lt;br /&gt;
The most common WordPress security issues present in plugins are cross-site scripting vulnerabilities (both persistent and reflected). Other vulnerabilities to check for include privilege escalation, remote code execution, logic errors, and SQL injection.&lt;br /&gt;
&lt;br /&gt;
===Review Process Overview===&lt;br /&gt;
A majority of the plugin review process involves manual inspection of the plugin and review of the plugin&#039;s code. The following steps outline a basic process followed when reviewing plugins.&lt;br /&gt;
* A test installation of WordPress is used (see Turnkey WordPress: http://www.turnkeylinux.org/wordpress)&lt;br /&gt;
** The WordPress version must match that of the blog on which the plugin will be installed.&lt;br /&gt;
* If the plugin is being installed on a high profile blog, a staging installation may already be available. It is best to test here to replicate the production environment as best as possible.&lt;br /&gt;
* The plugin to be tested is downloaded from WordPress using the most recent version available.&lt;br /&gt;
* Security testing is performed (see next section for detailed testing information).&lt;br /&gt;
* If any issues are detected, the developer is contacted and asked to release a fix.&lt;br /&gt;
* A blocking bug is created pertaining to the fix. If the developer does not respond within a reasonable time frame, our developers may fix the issue on a local installation.&lt;br /&gt;
&lt;br /&gt;
===Detailed Testing Procedures===&lt;br /&gt;
* Determine the functionality of the plugin. Most plugins add a set of features to the admin page, but some are much more complex.&lt;br /&gt;
** Do the features allow non-admin users to add data or enter input on the site?&lt;br /&gt;
** Is that data treated as unsafe (i.e. not used directly in SQL statements or reflected back to other users or admins)?&lt;br /&gt;
** Does the plugin alter the login process, add additional users, or grant additional rights to non-admins?&lt;br /&gt;
* View the settings page for the plugin and test the inputs for cross-site scripting and SQL injection vulnerabilities.&lt;br /&gt;
** Note that some plugins enable the use of unfiltered HTML within the admin page. This behavior is allowed unless the plugin also exposes this functionality to non-admins.&lt;br /&gt;
** Ensure that unfiltered HTML is being used in expected places. For example, unfiltered HTML may be allowed when editing posts, but some input boxes can be XSS&#039;ed with &amp;quot;/&amp;gt;&amp;lt;script&amp;gt;alert(1);&amp;lt;/script&amp;gt;. This breaks out of the settings input box and allows unfiltered code execution on the settings page.&lt;br /&gt;
* View the methods used to save settings. Some plugins use POST (desirable) and others use GET.&lt;br /&gt;
** Where GET is used, especially check all settings for potential XSS as an admin can be sent a link containing the XSS and it will be executed immediately (or following login).&lt;br /&gt;
** If POST is used, check for potential CSRF issues. A nonce should be used to protect the admin page from CSRF.&lt;br /&gt;
* View the code of the plugin itself (this can be done in WordPress by clicking Plugins &amp;gt; Editor and selecting the plugin).&lt;br /&gt;
** Check for all input accepted by the plugin ($_GET, $_REQUEST, $_POST).&lt;br /&gt;
** Fuzz all inputs for potential XSS and SQL injection vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
Do the varied nature of plugins, it is impossible to have a &amp;quot;one stop&amp;quot; checklist. Each plugin must be manually checked and the testing procedures altered depending on the functionality. The above process is a general guideline and does not apply to every plugin.&lt;br /&gt;
&lt;br /&gt;
= Security Review Documentation =&lt;br /&gt;
== Structure of a Security Review ==&lt;br /&gt;
&lt;br /&gt;
This document covers five distinct activities and the documentation they produce when a security review is performed.  Note that this guidance is prescriptive in that each component of a security review document should be produced, or a statement explaining why it wasn&#039;t should be included.&lt;br /&gt;
&lt;br /&gt;
The goal of this document is to ensure that the Security Assurance team has a consistent format for the documentation we produce without enforcing a strict structure on how security review and testing is performed.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
An architecture diagram illustrates how the various components of the service communicate with one another.&lt;br /&gt;
&lt;br /&gt;
The goal of the architecture diagram is to give the audience a high-level visual representation of how the different components of a system will interact together.  &lt;br /&gt;
&lt;br /&gt;
An example of this is the diagram below, which is from the old Mozilla F1 service.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.mozilla.org/images/thumb/7/78/F1design.png/392px-F1design.png Mozilla F1 Architecture Diagram]&lt;br /&gt;
&lt;br /&gt;
The F1 service had multiple components:&lt;br /&gt;
* a Firefox Add-on that hosted a pane loaded from the Mozilla F1 service that facilitated posting (&#039;sharing&#039;) content across multiple services&lt;br /&gt;
* a back-end that abstracted the &#039;sharing&#039; process such that a core set of common functions to facilitate easy incorporation of addition services without client updates&lt;br /&gt;
&lt;br /&gt;
Rather than providing a detailed assessment of how messages are passed between the various components, this diagram illustrates how the different components interact with one another, but not details about the interactions, or what data is shared between them.&lt;br /&gt;
&lt;br /&gt;
The goal of this diagram is to provide a concise overview of the system that provides a frame of reference when someone new to the system is reviewing supporting documentation or code.&lt;br /&gt;
&lt;br /&gt;
==== Key Attributes ====&lt;br /&gt;
* Clarity; brief descriptions of which components are communicating&lt;br /&gt;
* Illustrates the boundaries between different services&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples ====&lt;br /&gt;
*  [https://people.mozilla.com/~yboily/identity/assets/images-1/s31.b.jpeg BrowserID Protocol High Level]&lt;br /&gt;
*  [https://people.mozilla.com/~ckoenig/App-Marketplace.jpg Apps MarketPlace] TODO - Replace Me With A Simple Diagram!&lt;br /&gt;
&lt;br /&gt;
=== Detailed Application Diagram ===&lt;br /&gt;
A Detailed Application Diagram is essentially a Data-flow diagram;  a data flow diagram enumerates each application or service that is a component of a system, and illustrates each of the paths data can flow through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://wiki.mozilla.org/images/2/22/BrowserID-Threat-Model.png BrowserID Detailed Diagram]&lt;br /&gt;
&lt;br /&gt;
Note that a data-flow diagram is only one example of how this information.  The goal is to effectively communicate to the audience how data moves through the system, where different operations are performed, and if detailed enough, how different roles within the system can access different operations.&lt;br /&gt;
&lt;br /&gt;
When designing the detailed application diagram it can be useful to assemble a list of each of the subjects in a system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO - add references for subject/object/operations in relation to access control models.&lt;br /&gt;
&lt;br /&gt;
==== Key Attributes ====&lt;br /&gt;
* Clarity; labels for objects are brief, and contain clear references that can be used to cross-reference other documentation&lt;br /&gt;
* Detailed; ensure that all roles and operations are clearly presented&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples====&lt;br /&gt;
* [https://wiki.mozilla.org/images/b/bf/MozillaF1-Diagram.png Mozilla F1 Detailed Application Diagram]&lt;br /&gt;
* [https://wiki.mozilla.org/images/e/ee/BrowserID-Protocol.png BrowserID Protocol]&lt;br /&gt;
* [https://people.mozilla.com/~ckoenig/App-Marketplace.jpg AppStore Threat Model]&lt;br /&gt;
&lt;br /&gt;
=== Data-flow Enumeration ===&lt;br /&gt;
&lt;br /&gt;
Data-flow enumeration is an important supplement to the Detailed Application Diagram; it acts as a reference for someone reading the diagram to look up the nature of what information is associated with a call or request between two components.&lt;br /&gt;
&lt;br /&gt;
At a minimum, the flow enumeration should be a table indicating an identifier, subject, object, and the operation being performed.&lt;br /&gt;
&lt;br /&gt;
In the example below, an excerpt from the [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#1._Provisioning  BrowserID provisioning enumeration], the subject, object, and operation are labelled origin, destination, and description, respectively.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;fullwidth-table&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Origin&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Destination&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1.A||Relying Party||Implementation Provider|| An interaction with the Relying party invokes the Implementation Provider (IP).&lt;br /&gt;
|-&lt;br /&gt;
|1.B||Implementation Provider||Identity Authority||The IP either has an expired certificate, or no certificate, and directs the client to an Identity Authority landing page for authentication.  This authentication process is out of scope of the protocol, and implementation dependent.&lt;br /&gt;
|-&lt;br /&gt;
|1.C||Identity Authority||Identity Authority||Code from the IP landing page invokes genKeyPair() to generate a keypair.&lt;br /&gt;
|-&lt;br /&gt;
|1.D||Identity Authority||Implementation Provider||The IP saves the keypair in the client&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In addition to including the subject, object, operation columns, it can be helpful to include an explicit list of fields which are considered sensitive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples ====&lt;br /&gt;
* [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#1._Provisioning BrowserID Data-flow Enumeration]&lt;br /&gt;
&lt;br /&gt;
=== Threat Analysis ===&lt;br /&gt;
&lt;br /&gt;
When performing a security review of an application one of the most important components is a threat analysis.  There is a great deal of documentation on how to perform threat analysis, and a number of different techniques that can be used:&lt;br /&gt;
&lt;br /&gt;
* [https://www.owasp.org/index.php/Threat_Risk_Modeling OWASP Threat Risk Modelling]&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/security/aa570413 Microsoft Application Threat Modelling]&lt;br /&gt;
* [http://csrc.nist.gov/publications/nistpubs/800-30/sp800-30.pdf NIST Risk Management Guide][pdf]&lt;br /&gt;
&lt;br /&gt;
For the purposes of a Mozilla Security Review, the means by which someone identifies the threats and risks associated with an application is important, but not specified.  If you have questions about how to perform this type of analysis, please contact a member of our team!  &lt;br /&gt;
&lt;br /&gt;
The resulting threat analysis should be formatted in a clear format, including the following details:&lt;br /&gt;
&lt;br /&gt;
* ID - a identifier for the threat&lt;br /&gt;
* Title - a concise description of the threat&lt;br /&gt;
* Threat - a description of the threat&lt;br /&gt;
* Mitigations - a recommendation for a control that can be implemented [1]&lt;br /&gt;
* Threat Agent - a list of the potential actors considered that would exploit a vulnerability.&lt;br /&gt;
* Notes - Related comments that contribute to the analysis, but don&#039;t belong in other columns&lt;br /&gt;
* Rating - A qualitative scoring for a vulnerability in the context of this application [2]&lt;br /&gt;
* Impact - A qualitative score representing the impact should a vulnerability be exploited&lt;br /&gt;
* Likelihood - A qualitative score representing the likelihood of a vulnerability being exploited. [3]&lt;br /&gt;
&lt;br /&gt;
See [https://wiki.mozilla.org/Security/RiskRatings Risk Ratings] for details of how to calculate the qualitative scores.&lt;br /&gt;
&lt;br /&gt;
TODO - Glossary Threat, Threat Agent, Vulnerability, Exploit&lt;br /&gt;
[1] In the case of a threat analysis that contains multiple threats that can be resolved by one or more different controls it may be beneficial to include a separate control table, and list references to controls in that table instead.&lt;br /&gt;
[2] The rating is calculated by multiplying the impact by the likelihood.  This is a naive method, but it&#039;s what we have!&lt;br /&gt;
[3] In the case where different threat agents have different likelihoods, list the likelihoods highest to lowest, in the same order as the threat agents.&lt;br /&gt;
&lt;br /&gt;
Below is an excerpt from the [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#Threat_Model BrowserID Threat Analysis]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;fullwidth-table sortable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Title&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Threat&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Proposed Mitigations&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Threat Agent&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Rating&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Likelihood&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Impact&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 1||SIA may introduce compliance issues||Operating a Secondary Identity Authority may induce compliance requirements with regards to logging user information||Part of the goal of BrowserID is to have Primary Identity Authorities take on this risk as part of their other operations.  This can be somewhat mitigated by eliminating support for the webfinger verification process.||Governments, Lawyers||12||3||Governments and other legal actors have the ability to request  information from us, either through subpoenas, NSLs, etc.  While we hold information that can link user identities to services this information will be a source of risk.||4 – Reputation||Although we are required to comply, and Mozilla would fight such a request to the degree permitted, we would still receive negative press.&lt;br /&gt;
|-&lt;br /&gt;
| 2||Webfinger Information Leak||Use of the webfinger service for verification discloses each authentication attempt from the Relying Party to the Identity Authority||Implement verification using certificates||Malicious Identity Authority||25||5||This information disclosure is a part of the protocol.||5 – Privacy||This is probably a clear violation of our privacy policies.&lt;br /&gt;
|-&lt;br /&gt;
| 3||Chrome Code Injection||Attacker controlled parameters could permit injection of script into browser chrome.||Ensure that any data controlled by the user or relying party is emitted using output encoding.||Malicious Relying Party, Malicious User, Malicious Identity Authority||4||1||Code review and testing should prevent this occuring.  The technical complexity of this attack is higher than a vanilla XSS.||4 – User||This gives an attacker the ability to execute code in the context of browser chrome.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples ====&lt;br /&gt;
* Mozilla F1 Threats [https://wiki.mozilla.org/Security/Reviews/F1#Threat_Model]&lt;br /&gt;
* BrowserID Threats [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#Threat_Model]&lt;br /&gt;
&lt;br /&gt;
=== Security Testing ===&lt;br /&gt;
&lt;br /&gt;
The security test plan is a brief explanation of security testing that should be performed, and should include an explanation of what tasks are to be performed, and the approximate amount of time spent performing those tasks.&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/ReviewProcess&amp;diff=462481</id>
		<title>Security/ReviewProcess</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/ReviewProcess&amp;diff=462481"/>
		<updated>2012-08-20T19:25:37Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: /* Additional Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains draft documentation of our security review processes.&lt;br /&gt;
&lt;br /&gt;
= Security Review Processes =&lt;br /&gt;
==Web Application Review Process==&lt;br /&gt;
Web applications vary dramatically in design and functionality making it difficult to create a single use-case checklist for security reviews. However, most applications undergo the following checks during the security review process.&lt;br /&gt;
&lt;br /&gt;
===General Web Application Review Process===&lt;br /&gt;
Many of these questions are taken from the secure coding guidelines page: https://wiki.mozilla.org/WebAppSec/Secure_Coding_Guidelines&lt;br /&gt;
&lt;br /&gt;
====Access Information====&lt;br /&gt;
* How is the application accessed?&lt;br /&gt;
* Is the application internal or publicly available?&lt;br /&gt;
* If it is internal, what mechanism prevents non-members from accessing it?&lt;br /&gt;
* Are there links to user-only resources displayed to non-users?&lt;br /&gt;
* Are login pages secured with SSL over HTTPS?&lt;br /&gt;
* If HTTPS is used, is Strict Transport Security set?&lt;br /&gt;
&lt;br /&gt;
====Infrastructure and Backends====&lt;br /&gt;
* What languages do the applications use?&lt;br /&gt;
* What database language is used if applicable?&lt;br /&gt;
* Are the running versions up to date?&lt;br /&gt;
* What server is it running on?&lt;br /&gt;
&lt;br /&gt;
====Accounts and Passwords====&lt;br /&gt;
* If the mechanism to prevent general access is a password, how is the signup process handled?&lt;br /&gt;
* How is account information stored?&lt;br /&gt;
* Are passwords properly stored within databases if applicable?&lt;br /&gt;
* Is a password policy in place?&lt;br /&gt;
* Are accounts locked-out after a number of invalid logins?&lt;br /&gt;
* Are passwords 8 characters or greater?&lt;br /&gt;
* Do passwords use both numbers and letters (and possibly symbols)?&lt;br /&gt;
* Is there a blacklist of common passwords?&lt;br /&gt;
* Do passwords expire after X days and require a reset?&lt;br /&gt;
* Are invalid logins logged?&lt;br /&gt;
* Is there a lockout after X invalid attempts?&lt;br /&gt;
* Is the error message for lockout generic (does not include if user/pass is valid)?&lt;br /&gt;
* How are password resets handled (i.e. email, security question, etc.)?&lt;br /&gt;
* Do emails sent after signup/reset contain a session link? (should not)&lt;br /&gt;
* Do email verification codes expire after one use or 8 hours?&lt;br /&gt;
* Is password reuse limited/prevented?&lt;br /&gt;
&lt;br /&gt;
====Session Management====&lt;br /&gt;
* How long are session cookies stored?&lt;br /&gt;
* Are session tokens 128-bit or greater?&lt;br /&gt;
* Is session ID token creation handled by the server (or cryptographically if locally)?&lt;br /&gt;
* Do authenticated sessions timeout after 15 minutes?&lt;br /&gt;
* Is the Secure Flag enabled for all set cookies?&lt;br /&gt;
* Is the HTTP-Only flag used to disable malicious script access to the session ID?&lt;br /&gt;
* Are new session ids created on login?&lt;br /&gt;
* On logout, are session ids invalidated?&lt;br /&gt;
&lt;br /&gt;
====Third-Party Resources====&lt;br /&gt;
* Are third-party resources used (i.e. JavaScript libraries, images, CSS, etc.)?&lt;br /&gt;
* Can those resources be trusted / are they from reputable sources?&lt;br /&gt;
* Is there a chance the resource could be compromised?&lt;br /&gt;
* Is it possible to host the resources locally to mitigate risks?&lt;br /&gt;
* Is a third-party responsible for storage of user data?&lt;br /&gt;
* Does the application connect with services like Facebook, Twitter, etc?&lt;br /&gt;
&lt;br /&gt;
====Data Handling====&lt;br /&gt;
* What kind of data is transferred between the user and the application?&lt;br /&gt;
* Is this data generated by the user or generated automatically?&lt;br /&gt;
* Can the data be trusted?&lt;br /&gt;
* How is the data sent to the application (i.e. JSON format, plain-text, GET/POST, etc.)?&lt;br /&gt;
* How is the data handled by the server/application?&lt;br /&gt;
* Can the data be manipulated in transit?&lt;br /&gt;
* What happens if the data is altered?&lt;br /&gt;
* What is done with the data once it is received (i.e. stored in a database, displayed to users)?&lt;br /&gt;
* Is any data storage done via cookies? If so, what kind of data is stored via this method?&lt;br /&gt;
&lt;br /&gt;
====Uploaded Data====&lt;br /&gt;
* Can the user upload data to the application?&lt;br /&gt;
* Are extensions, file size, file type (not only based on extension), etc. checked?&lt;br /&gt;
* Are files renamed upon upload?&lt;br /&gt;
* Is the correct content-type used?&lt;br /&gt;
&lt;br /&gt;
====Data Sensitivity====&lt;br /&gt;
* What kind of data is being stored and/or manipulated by the application?&lt;br /&gt;
* Does this data need to be encrypted in transit? In storage?&lt;br /&gt;
* What is the impact if this data is lost/stolen?&lt;br /&gt;
* Is secure/sensitive data sent over SSL?&lt;br /&gt;
&lt;br /&gt;
====Application Administration====&lt;br /&gt;
* Is there an administration console?&lt;br /&gt;
* Can it be accessed publicly?&lt;br /&gt;
* How is it secured if so?&lt;br /&gt;
* Are correct methods used to prevent admin actions from being performed outside of the admin console (i.e. using CSRF tokens)?&lt;br /&gt;
* Are there any configuration pages that should not be made public?&lt;br /&gt;
&lt;br /&gt;
====Security Coding Flaws====&lt;br /&gt;
* Have all user inputs been sanitized?&lt;br /&gt;
* Is a maximum size for data (input or uploads) defined?&lt;br /&gt;
* Do all URL variables pass through sanitization?&lt;br /&gt;
* Is data from databases escaped properly?&lt;br /&gt;
* Are CSRF tokens used to prevent POSTs from outside websites?&lt;br /&gt;
* If a database is used, are protections against SQL injection in place?&lt;br /&gt;
* Is validation done on the server side (not just client-side)?&lt;br /&gt;
* Is output encoded in addition to sanitization of input?&lt;br /&gt;
* Does the user ever send data to the OS level?&lt;br /&gt;
* Are x-frame options sent to “deny” or “sameorigin”?&lt;br /&gt;
* Is debug mode disabled?&lt;br /&gt;
&lt;br /&gt;
===Additional Resources===&lt;br /&gt;
Template for the above checks: https://docs.google.com/document/d/1SAzDuMwKUNN4_gdotqcv0oeZwLngjXjNYuZ2HZZaXp4/edit&lt;br /&gt;
&lt;br /&gt;
Also, please view the WebAppSec Wiki: https://wiki.mozilla.org/WebAppSec&lt;br /&gt;
&lt;br /&gt;
==WordPress Plugin Review Process==&lt;br /&gt;
Before being installed, all WordPress plugins must be reviewed by the security team. These reviews are simpler than full site reviews and ensure that the plugin being installed does not compromise the security of the blog/site.&lt;br /&gt;
&lt;br /&gt;
===Common Attack Vectors===&lt;br /&gt;
The most common WordPress security issues present in plugins are cross-site scripting vulnerabilities (both persistent and reflected). Other vulnerabilities to check for include privilege escalation, remote code execution, logic errors, and SQL injection.&lt;br /&gt;
&lt;br /&gt;
===Review Process Overview===&lt;br /&gt;
A majority of the plugin review process involves manual inspection of the plugin and review of the plugin&#039;s code. The following steps outline a basic process followed when reviewing plugins.&lt;br /&gt;
* A test installation of WordPress is used (see Turnkey WordPress: http://www.turnkeylinux.org/wordpress)&lt;br /&gt;
** The WordPress version must match that of the blog on which the plugin will be installed.&lt;br /&gt;
* If the plugin is being installed on a high profile blog, a staging installation may already be available. It is best to test here to replicate the production environment as best as possible.&lt;br /&gt;
* The plugin to be tested is downloaded from WordPress using the most recent version available.&lt;br /&gt;
* Security testing is performed (see next section for detailed testing information).&lt;br /&gt;
* If any issues are detected, the developer is contacted and asked to release a fix.&lt;br /&gt;
* A blocking bug is created pertaining to the fix. If the developer does not respond within a reasonable time frame, our developers may fix the issue on a local installation.&lt;br /&gt;
&lt;br /&gt;
===Detailed Testing Procedures===&lt;br /&gt;
* Determine the functionality of the plugin. Most plugins add a set of features to the admin page, but some are much more complex.&lt;br /&gt;
** Do the features allow non-admin users to add data or enter input on the site?&lt;br /&gt;
** Is that data treated as unsafe (i.e. not used directly in SQL statements or reflected back to other users or admins)?&lt;br /&gt;
** Does the plugin alter the login process, add additional users, or grant additional rights to non-admins?&lt;br /&gt;
* View the settings page for the plugin and test the inputs for cross-site scripting and SQL injection vulnerabilities.&lt;br /&gt;
** Note that some plugins enable the use of unfiltered HTML within the admin page. This behavior is allowed unless the plugin also exposes this functionality to non-admins.&lt;br /&gt;
** Ensure that unfiltered HTML is being used in expected places. For example, unfiltered HTML may be allowed when editing posts, but some input boxes can be XSS&#039;ed with &amp;quot;/&amp;gt;&amp;lt;script&amp;gt;alert(1);&amp;lt;/script&amp;gt;. This breaks out of the settings input box and allows unfiltered code execution on the settings page.&lt;br /&gt;
* View the methods used to save settings. Some plugins use POST (desirable) and others use GET.&lt;br /&gt;
** Where GET is used, especially check all settings for potential XSS as an admin can be sent a link containing the XSS and it will be executed immediately (or following login).&lt;br /&gt;
** If POST is used, check for potential CSRF issues. A nonce should be used to protect the admin page from CSRF.&lt;br /&gt;
* View the code of the plugin itself (this can be done in WordPress by clicking Plugins &amp;gt; Editor and selecting the plugin).&lt;br /&gt;
** Check for all input accepted by the plugin ($_GET, $_REQUEST, $_POST).&lt;br /&gt;
** Fuzz all inputs for potential XSS and SQL injection vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
Do the varied nature of plugins, it is impossible to have a &amp;quot;one stop&amp;quot; checklist. Each plugin must be manually checked and the testing procedures altered depending on the functionality. The above process is a general guideline and does not apply to every plugin.&lt;br /&gt;
&lt;br /&gt;
= Security Review Documentation =&lt;br /&gt;
== Structure of a Security Review ==&lt;br /&gt;
&lt;br /&gt;
This document covers five distinct activities and the documentation they produce when a security review is performed.  Note that this guidance is prescriptive in that each component of a security review document should be produced, or a statement explaining why it wasn&#039;t should be included.&lt;br /&gt;
&lt;br /&gt;
The goal of this document is to ensure that the Security Assurance team has a consistent format for the documentation we produce without enforcing a strict structure on how security review and testing is performed.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
An architecture diagram illustrates how the various components of the service communicate with one another.&lt;br /&gt;
&lt;br /&gt;
The goal of the architecture diagram is to give the audience a high-level visual representation of how the different components of a system will interact together.  &lt;br /&gt;
&lt;br /&gt;
An example of this is the diagram below, which is from the old Mozilla F1 service.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.mozilla.org/images/thumb/7/78/F1design.png/392px-F1design.png Mozilla F1 Architecture Diagram]&lt;br /&gt;
&lt;br /&gt;
The F1 service had multiple components:&lt;br /&gt;
* a Firefox Add-on that hosted a pane loaded from the Mozilla F1 service that facilitated posting (&#039;sharing&#039;) content across multiple services&lt;br /&gt;
* a back-end that abstracted the &#039;sharing&#039; process such that a core set of common functions to facilitate easy incorporation of addition services without client updates&lt;br /&gt;
&lt;br /&gt;
Rather than providing a detailed assessment of how messages are passed between the various components, this diagram illustrates how the different components interact with one another, but not details about the interactions, or what data is shared between them.&lt;br /&gt;
&lt;br /&gt;
The goal of this diagram is to provide a concise overview of the system that provides a frame of reference when someone new to the system is reviewing supporting documentation or code.&lt;br /&gt;
&lt;br /&gt;
==== Key Attributes ====&lt;br /&gt;
* Clarity; brief descriptions of which components are communicating&lt;br /&gt;
* Illustrates the boundaries between different services&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples ====&lt;br /&gt;
*  [https://people.mozilla.com/~yboily/identity/assets/images-1/s31.b.jpeg BrowserID Protocol High Level]&lt;br /&gt;
*  [https://people.mozilla.com/~ckoenig/App-Marketplace.jpg Apps MarketPlace] TODO - Replace Me With A Simple Diagram!&lt;br /&gt;
&lt;br /&gt;
=== Detailed Application Diagram ===&lt;br /&gt;
A Detailed Application Diagram is essentially a Data-flow diagram;  a data flow diagram enumerates each application or service that is a component of a system, and illustrates each of the paths data can flow through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://wiki.mozilla.org/images/2/22/BrowserID-Threat-Model.png BrowserID Detailed Diagram]&lt;br /&gt;
&lt;br /&gt;
Note that a data-flow diagram is only one example of how this information.  The goal is to effectively communicate to the audience how data moves through the system, where different operations are performed, and if detailed enough, how different roles within the system can access different operations.&lt;br /&gt;
&lt;br /&gt;
When designing the detailed application diagram it can be useful to assemble a list of each of the subjects in a system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO - add references for subject/object/operations in relation to access control models.&lt;br /&gt;
&lt;br /&gt;
==== Key Attributes ====&lt;br /&gt;
* Clarity; labels for objects are brief, and contain clear references that can be used to cross-reference other documentation&lt;br /&gt;
* Detailed; ensure that all roles and operations are clearly presented&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples====&lt;br /&gt;
* [https://wiki.mozilla.org/images/b/bf/MozillaF1-Diagram.png Mozilla F1 Detailed Application Diagram]&lt;br /&gt;
* [https://wiki.mozilla.org/images/e/ee/BrowserID-Protocol.png BrowserID Protocol]&lt;br /&gt;
* [https://people.mozilla.com/~ckoenig/App-Marketplace.jpg AppStore Threat Model]&lt;br /&gt;
&lt;br /&gt;
=== Data-flow Enumeration ===&lt;br /&gt;
&lt;br /&gt;
Data-flow enumeration is an important supplement to the Detailed Application Diagram; it acts as a reference for someone reading the diagram to look up the nature of what information is associated with a call or request between two components.&lt;br /&gt;
&lt;br /&gt;
At a minimum, the flow enumeration should be a table indicating an identifier, subject, object, and the operation being performed.&lt;br /&gt;
&lt;br /&gt;
In the example below, an excerpt from the [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#1._Provisioning  BrowserID provisioning enumeration], the subject, object, and operation are labelled origin, destination, and description, respectively.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;fullwidth-table&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Origin&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Destination&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1.A||Relying Party||Implementation Provider|| An interaction with the Relying party invokes the Implementation Provider (IP).&lt;br /&gt;
|-&lt;br /&gt;
|1.B||Implementation Provider||Identity Authority||The IP either has an expired certificate, or no certificate, and directs the client to an Identity Authority landing page for authentication.  This authentication process is out of scope of the protocol, and implementation dependent.&lt;br /&gt;
|-&lt;br /&gt;
|1.C||Identity Authority||Identity Authority||Code from the IP landing page invokes genKeyPair() to generate a keypair.&lt;br /&gt;
|-&lt;br /&gt;
|1.D||Identity Authority||Implementation Provider||The IP saves the keypair in the client&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In addition to including the subject, object, operation columns, it can be helpful to include an explicit list of fields which are considered sensitive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples ====&lt;br /&gt;
* [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#1._Provisioning BrowserID Data-flow Enumeration]&lt;br /&gt;
&lt;br /&gt;
=== Threat Analysis ===&lt;br /&gt;
&lt;br /&gt;
When performing a security review of an application one of the most important components is a threat analysis.  There is a great deal of documentation on how to perform threat analysis, and a number of different techniques that can be used:&lt;br /&gt;
&lt;br /&gt;
* [https://www.owasp.org/index.php/Threat_Risk_Modeling OWASP Threat Risk Modelling]&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/security/aa570413 Microsoft Application Threat Modelling]&lt;br /&gt;
* [http://csrc.nist.gov/publications/nistpubs/800-30/sp800-30.pdf NIST Risk Management Guide][pdf]&lt;br /&gt;
&lt;br /&gt;
For the purposes of a Mozilla Security Review, the means by which someone identifies the threats and risks associated with an application is important, but not specified.  If you have questions about how to perform this type of analysis, please contact a member of our team!  &lt;br /&gt;
&lt;br /&gt;
The resulting threat analysis should be formatted in a clear format, including the following details:&lt;br /&gt;
&lt;br /&gt;
* ID - a identifier for the threat&lt;br /&gt;
* Title - a concise description of the threat&lt;br /&gt;
* Threat - a description of the threat&lt;br /&gt;
* Mitigations - a recommendation for a control that can be implemented [1]&lt;br /&gt;
* Threat Agent - a list of the potential actors considered that would exploit a vulnerability.&lt;br /&gt;
* Notes - Related comments that contribute to the analysis, but don&#039;t belong in other columns&lt;br /&gt;
* Rating - A qualitative scoring for a vulnerability in the context of this application [2]&lt;br /&gt;
* Impact - A qualitative score representing the impact should a vulnerability be exploited&lt;br /&gt;
* Likelihood - A qualitative score representing the likelihood of a vulnerability being exploited. [3]&lt;br /&gt;
&lt;br /&gt;
See [https://wiki.mozilla.org/Security/RiskRatings Risk Ratings] for details of how to calculate the qualitative scores.&lt;br /&gt;
&lt;br /&gt;
TODO - Glossary Threat, Threat Agent, Vulnerability, Exploit&lt;br /&gt;
[1] In the case of a threat analysis that contains multiple threats that can be resolved by one or more different controls it may be beneficial to include a separate control table, and list references to controls in that table instead.&lt;br /&gt;
[2] The rating is calculated by multiplying the impact by the likelihood.  This is a naive method, but it&#039;s what we have!&lt;br /&gt;
[3] In the case where different threat agents have different likelihoods, list the likelihoods highest to lowest, in the same order as the threat agents.&lt;br /&gt;
&lt;br /&gt;
Below is an excerpt from the [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#Threat_Model BrowserID Threat Analysis]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;fullwidth-table sortable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Title&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Threat&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Proposed Mitigations&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Threat Agent&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Rating&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Likelihood&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Impact&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 1||SIA may introduce compliance issues||Operating a Secondary Identity Authority may induce compliance requirements with regards to logging user information||Part of the goal of BrowserID is to have Primary Identity Authorities take on this risk as part of their other operations.  This can be somewhat mitigated by eliminating support for the webfinger verification process.||Governments, Lawyers||12||3||Governments and other legal actors have the ability to request  information from us, either through subpoenas, NSLs, etc.  While we hold information that can link user identities to services this information will be a source of risk.||4 – Reputation||Although we are required to comply, and Mozilla would fight such a request to the degree permitted, we would still receive negative press.&lt;br /&gt;
|-&lt;br /&gt;
| 2||Webfinger Information Leak||Use of the webfinger service for verification discloses each authentication attempt from the Relying Party to the Identity Authority||Implement verification using certificates||Malicious Identity Authority||25||5||This information disclosure is a part of the protocol.||5 – Privacy||This is probably a clear violation of our privacy policies.&lt;br /&gt;
|-&lt;br /&gt;
| 3||Chrome Code Injection||Attacker controlled parameters could permit injection of script into browser chrome.||Ensure that any data controlled by the user or relying party is emitted using output encoding.||Malicious Relying Party, Malicious User, Malicious Identity Authority||4||1||Code review and testing should prevent this occuring.  The technical complexity of this attack is higher than a vanilla XSS.||4 – User||This gives an attacker the ability to execute code in the context of browser chrome.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples ====&lt;br /&gt;
* Mozilla F1 Threats [https://wiki.mozilla.org/Security/Reviews/F1#Threat_Model]&lt;br /&gt;
* BrowserID Threats [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#Threat_Model]&lt;br /&gt;
&lt;br /&gt;
=== Security Testing ===&lt;br /&gt;
&lt;br /&gt;
The security test plan is a brief explanation of security testing that should be performed, and should include an explanation of what tasks are to be performed, and the approximate amount of time spent performing those tasks.&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security&amp;diff=462460</id>
		<title>Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security&amp;diff=462460"/>
		<updated>2012-08-20T18:34:22Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: /* Twitter Accounts of Security Mozillians */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Mozilla Security wiki.  &lt;br /&gt;
&lt;br /&gt;
=== Security-related bugs  ===&lt;br /&gt;
* [[Security Severity Ratings]] &lt;br /&gt;
* [http://www.mozilla.org/security/#For_Developers How to report a security issue] &lt;br /&gt;
* [[Security/FixMe|Want to fix a security bug? Here is a list of old thorny bugs you can take on.]]&lt;br /&gt;
&lt;br /&gt;
===Engaging with Security===&lt;br /&gt;
====How To Find Us====&lt;br /&gt;
Lot&#039;s of options, we&#039;re here to help:&lt;br /&gt;
* [mailto:Security@mozilla.org Security@mozilla.org] - email us any questions, concerns, etc&lt;br /&gt;
* Bugzilla Keyword - &#039;&#039;&#039;sec-review-needed&#039;&#039;&#039; - We triage based on this keyword and will jump in to provide assistance&lt;br /&gt;
* &#039;&#039;&#039;#security&#039;&#039;&#039; on [https://wiki.mozilla.org/IRC IRC]&lt;br /&gt;
* File a security/privacy review request via this [https://wiki.mozilla.org/Security/Reviews/Review_Request_Form link]&lt;br /&gt;
* Attend a [[Security/Talks | Security Talk]] given by one of the security team&lt;br /&gt;
&lt;br /&gt;
====Security reviews for new features/products/applications====&lt;br /&gt;
&#039;&#039;Main Article: [[Security/Reviews]]&#039;&#039;&lt;br /&gt;
* Find past reviews by [https://wiki.mozilla.org/Category:SecReview Category:SecReview]&lt;br /&gt;
====The Mozilla Secure Development Lifecycle ====&lt;br /&gt;
* Understand the [[Security/Reviews/Secure Development Lifecycle | Secure Development Lifecycle]] used to secure our new features/products/applications &lt;br /&gt;
* Information on Bugzilla and the [[Security/Reviews/Bugzilla Components| Security Assurance Component]]&lt;br /&gt;
====Request a Security or Privacy Review ====&lt;br /&gt;
* Complete the questions at the following page to provide the basic info to kickstart a security or privacy review&lt;br /&gt;
* We&#039;ll create and link the corresponding wiki page within the [[Security/Radar|Security Radar]]&lt;br /&gt;
* [[Security/Reviews/Review Request Form | Security &amp;amp; Privacy Review Request Form]]&lt;br /&gt;
====[[Security/Radar|Security Radar]]====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable collapsible collapsed&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! Unlinked Reviews&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[Security/Reviews/Mobile/AndroidSystemStorage| Android System Storage]]&lt;br /&gt;
* [[Security/Firefox/WebAPI/WebBattery| WebBattery]]&lt;br /&gt;
* [[Security/Reviews/BrowserIDCAPI| BrowserID C API]]&lt;br /&gt;
* [[Security/Reviews/crossoriginAttribute|Add crossorigin attribute]]&lt;br /&gt;
* [[Security/Reviews/Firefox10/SyncDialogue|Sync Dialogue]]&lt;br /&gt;
* [[Security/Reviews/JetPack2011-20/12 | JetPack 2011-10-12]]&lt;br /&gt;
* [[Security/Reviews/XHRnonpost| XHR non-post rewrite]]&lt;br /&gt;
* [[Security/Reviews/StubInstaller|Stub Installer]]&lt;br /&gt;
* [[Labs/Weave/Sync Client Security Review|Sync Client]]&lt;br /&gt;
* [[Firefox Sync/Weave 1.3b5 Client Security Review|Weave 1.3b5 Client]]&lt;br /&gt;
* [[Security/Reviews/DNSSEC-TLS|DNSSEC-TLS]]&lt;br /&gt;
* [[Security/Reviews/OWA-F1|Web Activities &amp;amp; F1]]&lt;br /&gt;
* [[Security/Reviews/ReviewNotes/MouseLock|MouseLock]]&lt;br /&gt;
* [[Security/Reviews/ReviewNotes/Joystick|Joystick]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable collapsible collapsed&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! Unlinked Discussions&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[Security/Discussions/WebRTC|WebRTC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Security Feature Development===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Main article: [[Security/Roadmap]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Main article: [[Privacy/Roadmap]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Security Initiatives  ===&lt;br /&gt;
&lt;br /&gt;
*[[Security/TeamEmbedding]]&lt;br /&gt;
*Prioritizing and driving non-feature work:  [[Security/Driving]]&lt;br /&gt;
&lt;br /&gt;
=== Security Resources and Blogs ===&lt;br /&gt;
&lt;br /&gt;
==== Mozilla Official Sites ====&lt;br /&gt;
* [http://www.mozilla.org/security Mozilla Security Center]&lt;br /&gt;
* [http://developer.mozilla.org/en/Security Mozilla security developer docs]&lt;br /&gt;
* [[CA|Mozilla CA Root Program]]&lt;br /&gt;
* [http://blog.mozilla.com/security Mozilla Security blog]&lt;br /&gt;
* [http://blog.mozilla.com/webappsec Mozilla WebApp Sec Blog]&lt;br /&gt;
* [https://wiki.mozilla.org/WebAppSec/Secure_Coding_Guidelines Secure Coding Guidelines for Webapps]&lt;br /&gt;
&lt;br /&gt;
==== Personal Security Related Blogs of Mozillians ====&lt;br /&gt;
* [http://blog.mozilla.com/ladamski Lucas Adamski&#039;s blog]&lt;br /&gt;
* [http://blog.sidstamm.com Sid Stamm&#039;s blog]&lt;br /&gt;
* [https://spartiates.wordpress.com/ Curtis Koenig&#039;s blog]&lt;br /&gt;
* [http://www.squarefree.com/ Jesse Ruderman&#039;s blog] ([http://www.squarefree.com/categories/fuzzing/ fuzzing entries], [http://www.squarefree.com/categories/security/ security entries])&lt;br /&gt;
* [http://michael-coates.blogspot.com/ Michael Coates]&lt;br /&gt;
* [http://blog.mozilla.com/imelven Ian Melven&#039;s Mozilla/Security blog]&lt;br /&gt;
* [http://blog.mozilla.com/decoder Christian Holler&#039;s blog (decoder)]&lt;br /&gt;
&lt;br /&gt;
==== Twitter Accounts of Security Mozillians ====&lt;br /&gt;
* [https://twitter.com/mozsec Mozilla Security]&lt;br /&gt;
* [https://twitter.com/mozwebsec Mozilla Web Security]&lt;br /&gt;
* [https://twitter.com/jruderman Jesse Ruderman]&lt;br /&gt;
* [https://twitter.com/curtisko Curtis Koenig] (all kinds of random stuff)&lt;br /&gt;
* [https://twitter.com/_mwc Michael Coates]&lt;br /&gt;
* [https://twitter.com/flamsmark Tom Lowenthal] (privacy)&lt;br /&gt;
* [https://twitter.com/securitae Lucas Adamski]&lt;br /&gt;
* [https://twitter.com/alexanderfowler Alex Fowler]&lt;br /&gt;
* [https://twitter.com/ygjb Yvan Boily]&lt;br /&gt;
* [https://twitter.com/dveditz Daniel Veditz]&lt;br /&gt;
* [https://twitter.com/gh_rooster Raymond Forbes]&lt;br /&gt;
* [https://twitter.com/openbuddha Al Billings] (but mostly Buddhist and Hackerspace tweets)&lt;br /&gt;
* [https://twitter.com/imelven Ian Melven]&lt;br /&gt;
* [https://twitter.com/kangsterizer Guillaume Destuynder]&lt;br /&gt;
* [https://twitter.com/nth10sd Gary Kwong] (all sorts of stuff)&lt;br /&gt;
* [https://twitter.com/mozdeco Christian Holler (decoder)]&lt;br /&gt;
* [https://twitter.com/neoCrimeLabs Michael Henry (tinfoil)]&lt;br /&gt;
* [https://twitter.com/tanvihacks Tanvi Vyas]&lt;br /&gt;
* [https://twitter.com/psiinon Simon Bennetts (psiinon)]&lt;br /&gt;
* [https://twitter.com/matthewdfuller Matt Fuller (mfuller)]&lt;br /&gt;
&lt;br /&gt;
==== Non-Mozilla Resources (blogs, news sites, twitter, tools) ====&lt;br /&gt;
* [[Security/OtherSecurityResources| Other Security Resources]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Stuff that needs to be merged into this page properly&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Meeting Notes ===&lt;br /&gt;
{| class=&amp;quot;wikitable collapsible collapsed&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! Meetings&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[Security/Meetings/SecurityAssurance|Security Assurance]]&lt;br /&gt;
* [[Security/AppSecBiweekly|AppSec Bi Weelky]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable collapsible collapsed&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! SecTeam Meetings 2012 &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[Security/Meetings/2012-02-01|2012-02-01]]&lt;br /&gt;
* [[Security/Meetings/2012-01-25|2012-01-25]]&lt;br /&gt;
* [[Security/Meetings/2012-01-18|2012-01-18]]&lt;br /&gt;
* [[Security/Meetings/2012-01-11|2012-01-11]]&lt;br /&gt;
* [[Security/Meetings/2012-01-04|2012-01-04]]&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable collapsible collapsed&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! SecTeam Meetings 2011 &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[Security/Meetings/2011-12-28|2011-12-28]]&lt;br /&gt;
* [[Security/Meetings/2011-12-21|2011-12-21]]&lt;br /&gt;
* [[Security/Meetings/2011-12-07|2011-12-14]]&lt;br /&gt;
* [[Security/Meetings/2011-12-07|2011-12-07]]&lt;br /&gt;
* [[Security/Meetings/2011-11-30|2011-11-30]]&lt;br /&gt;
* [[Security/Meetings/2011-11-23|2011-11-23]]&lt;br /&gt;
* [[Security/Meetings/2011-11-16|2011-11-16]]&lt;br /&gt;
* [[Security/Meetings/2011-11-09|2011-11-09]]&lt;br /&gt;
* [[Security/Meetings/2011-11-02|2011-11-02]]&lt;br /&gt;
* [[Security/Meetings/2011-10-26|2011-10-26]]&lt;br /&gt;
* [[Security/Meetings/2011-10-19|2011-10-19]]&lt;br /&gt;
* [[Security/Meetings/2011-10-12|2011-10-12]]&lt;br /&gt;
* [[Security/Meetings/2011-10-05|2011-10-05]]&lt;br /&gt;
* [[Security/Meetings/2011-09-28|2011-09-28]]&lt;br /&gt;
* No meeting on 9/14 (All Hands) or 9/21 (Fuzzing Work Week)&lt;br /&gt;
* [[Security/Meetings/2011-09-07|2011-09-07]]&lt;br /&gt;
* [[Security/Meetings/2011-08-31|2011-08-31]]&lt;br /&gt;
* [[Security/Meetings/2011-08-24|2011-08-24]]&lt;br /&gt;
* [[Security/Meetings/lifecycledisc|Life Cycle discussion]]&lt;br /&gt;
* [[Security/Meetings/2011-08-17|2011-08-17]]&lt;br /&gt;
* [[Security/Meetings/2011-08-10|2011-08-10]]&lt;br /&gt;
* [[Security/Meetings/2011-07-27|2011-07-27]]&lt;br /&gt;
* [[Security/Meetings/2011-07-20|2011-07-20]]&lt;br /&gt;
* [[Security/Meetings/2011-07-13|2011-07-13]]&lt;br /&gt;
* [[Security/Meetings/2011-07-06|2011-07-06]]&lt;br /&gt;
* [[Security/Meetings/2011-06-29|2011-06-29]]&lt;br /&gt;
* [[Security/Meetings/2011-06-22|2011-06-22]]&lt;br /&gt;
* [[Security/Meetings/2011-06-15|2011-06-15]]&lt;br /&gt;
* [[Security/Meetings/2011-06-08|2011-06-08]]&lt;br /&gt;
* [[Security/Meetings/2011-06-01|2011-06-01]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable collapsible collapsed&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! Joint Secteam-Infrasec Meetings 2012 &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [[Security/Meetings/2012-01-12|2012-01-12]]&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable collapsible collapsed&amp;quot; style=&amp;quot;width: 100%&amp;quot;&lt;br /&gt;
! Joint Secteam-Infrasec Meetings 2011&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
* [[Security/Meetings/2011-12-15|2011-12-15]]&lt;br /&gt;
* [[Security/Meetings/2011-11-17|2011-11-17]]&lt;br /&gt;
* [[Security/Meetings/2011-10-06|2011-10-06]]&lt;br /&gt;
* [[Security/Meetings/2011-09-08|2011-09-08]]&lt;br /&gt;
* [[Security/Meetings/2011-08-25|2011-08-25]]&lt;br /&gt;
* [[Security/Meetings/2011-08-11|2011-08-11]]&lt;br /&gt;
* [[Security/Meetings/2011-07-28|2011-07-28]]&lt;br /&gt;
* [[Security/Meetings/2011-06-16|2011-06-16]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/ReviewProcess&amp;diff=462445</id>
		<title>Security/ReviewProcess</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/ReviewProcess&amp;diff=462445"/>
		<updated>2012-08-20T18:12:04Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: /* Additional Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains draft documentation of our security review processes.&lt;br /&gt;
&lt;br /&gt;
= Security Review Processes =&lt;br /&gt;
==Web Application Review Process==&lt;br /&gt;
Web applications vary dramatically in design and functionality making it difficult to create a single use-case checklist for security reviews. However, most applications undergo the following checks during the security review process.&lt;br /&gt;
&lt;br /&gt;
===General Web Application Review Process===&lt;br /&gt;
Many of these questions are taken from the secure coding guidelines page: https://wiki.mozilla.org/WebAppSec/Secure_Coding_Guidelines&lt;br /&gt;
&lt;br /&gt;
====Access Information====&lt;br /&gt;
* How is the application accessed?&lt;br /&gt;
* Is the application internal or publicly available?&lt;br /&gt;
* If it is internal, what mechanism prevents non-members from accessing it?&lt;br /&gt;
* Are there links to user-only resources displayed to non-users?&lt;br /&gt;
* Are login pages secured with SSL over HTTPS?&lt;br /&gt;
* If HTTPS is used, is Strict Transport Security set?&lt;br /&gt;
&lt;br /&gt;
====Infrastructure and Backends====&lt;br /&gt;
* What languages do the applications use?&lt;br /&gt;
* What database language is used if applicable?&lt;br /&gt;
* Are the running versions up to date?&lt;br /&gt;
* What server is it running on?&lt;br /&gt;
&lt;br /&gt;
====Accounts and Passwords====&lt;br /&gt;
* If the mechanism to prevent general access is a password, how is the signup process handled?&lt;br /&gt;
* How is account information stored?&lt;br /&gt;
* Are passwords properly stored within databases if applicable?&lt;br /&gt;
* Is a password policy in place?&lt;br /&gt;
* Are accounts locked-out after a number of invalid logins?&lt;br /&gt;
* Are passwords 8 characters or greater?&lt;br /&gt;
* Do passwords use both numbers and letters (and possibly symbols)?&lt;br /&gt;
* Is there a blacklist of common passwords?&lt;br /&gt;
* Do passwords expire after X days and require a reset?&lt;br /&gt;
* Are invalid logins logged?&lt;br /&gt;
* Is there a lockout after X invalid attempts?&lt;br /&gt;
* Is the error message for lockout generic (does not include if user/pass is valid)?&lt;br /&gt;
* How are password resets handled (i.e. email, security question, etc.)?&lt;br /&gt;
* Do emails sent after signup/reset contain a session link? (should not)&lt;br /&gt;
* Do email verification codes expire after one use or 8 hours?&lt;br /&gt;
* Is password reuse limited/prevented?&lt;br /&gt;
&lt;br /&gt;
====Session Management====&lt;br /&gt;
* How long are session cookies stored?&lt;br /&gt;
* Are session tokens 128-bit or greater?&lt;br /&gt;
* Is session ID token creation handled by the server (or cryptographically if locally)?&lt;br /&gt;
* Do authenticated sessions timeout after 15 minutes?&lt;br /&gt;
* Is the Secure Flag enabled for all set cookies?&lt;br /&gt;
* Is the HTTP-Only flag used to disable malicious script access to the session ID?&lt;br /&gt;
* Are new session ids created on login?&lt;br /&gt;
* On logout, are session ids invalidated?&lt;br /&gt;
&lt;br /&gt;
====Third-Party Resources====&lt;br /&gt;
* Are third-party resources used (i.e. JavaScript libraries, images, CSS, etc.)?&lt;br /&gt;
* Can those resources be trusted / are they from reputable sources?&lt;br /&gt;
* Is there a chance the resource could be compromised?&lt;br /&gt;
* Is it possible to host the resources locally to mitigate risks?&lt;br /&gt;
* Is a third-party responsible for storage of user data?&lt;br /&gt;
* Does the application connect with services like Facebook, Twitter, etc?&lt;br /&gt;
&lt;br /&gt;
====Data Handling====&lt;br /&gt;
* What kind of data is transferred between the user and the application?&lt;br /&gt;
* Is this data generated by the user or generated automatically?&lt;br /&gt;
* Can the data be trusted?&lt;br /&gt;
* How is the data sent to the application (i.e. JSON format, plain-text, GET/POST, etc.)?&lt;br /&gt;
* How is the data handled by the server/application?&lt;br /&gt;
* Can the data be manipulated in transit?&lt;br /&gt;
* What happens if the data is altered?&lt;br /&gt;
* What is done with the data once it is received (i.e. stored in a database, displayed to users)?&lt;br /&gt;
* Is any data storage done via cookies? If so, what kind of data is stored via this method?&lt;br /&gt;
&lt;br /&gt;
====Uploaded Data====&lt;br /&gt;
* Can the user upload data to the application?&lt;br /&gt;
* Are extensions, file size, file type (not only based on extension), etc. checked?&lt;br /&gt;
* Are files renamed upon upload?&lt;br /&gt;
* Is the correct content-type used?&lt;br /&gt;
&lt;br /&gt;
====Data Sensitivity====&lt;br /&gt;
* What kind of data is being stored and/or manipulated by the application?&lt;br /&gt;
* Does this data need to be encrypted in transit? In storage?&lt;br /&gt;
* What is the impact if this data is lost/stolen?&lt;br /&gt;
* Is secure/sensitive data sent over SSL?&lt;br /&gt;
&lt;br /&gt;
====Application Administration====&lt;br /&gt;
* Is there an administration console?&lt;br /&gt;
* Can it be accessed publicly?&lt;br /&gt;
* How is it secured if so?&lt;br /&gt;
* Are correct methods used to prevent admin actions from being performed outside of the admin console (i.e. using CSRF tokens)?&lt;br /&gt;
* Are there any configuration pages that should not be made public?&lt;br /&gt;
&lt;br /&gt;
====Security Coding Flaws====&lt;br /&gt;
* Have all user inputs been sanitized?&lt;br /&gt;
* Is a maximum size for data (input or uploads) defined?&lt;br /&gt;
* Do all URL variables pass through sanitization?&lt;br /&gt;
* Is data from databases escaped properly?&lt;br /&gt;
* Are CSRF tokens used to prevent POSTs from outside websites?&lt;br /&gt;
* If a database is used, are protections against SQL injection in place?&lt;br /&gt;
* Is validation done on the server side (not just client-side)?&lt;br /&gt;
* Is output encoded in addition to sanitization of input?&lt;br /&gt;
* Does the user ever send data to the OS level?&lt;br /&gt;
* Are x-frame options sent to “deny” or “sameorigin”?&lt;br /&gt;
* Is debug mode disabled?&lt;br /&gt;
&lt;br /&gt;
===Additional Resources===&lt;br /&gt;
Template for the above checks: https://docs.google.com/document/d/1SAzDuMwKUNN4_gdotqcv0oeZwLngjXjNYuZ2HZZaXp4/edit&lt;br /&gt;
&lt;br /&gt;
==WordPress Plugin Review Process==&lt;br /&gt;
Before being installed, all WordPress plugins must be reviewed by the security team. These reviews are simpler than full site reviews and ensure that the plugin being installed does not compromise the security of the blog/site.&lt;br /&gt;
&lt;br /&gt;
===Common Attack Vectors===&lt;br /&gt;
The most common WordPress security issues present in plugins are cross-site scripting vulnerabilities (both persistent and reflected). Other vulnerabilities to check for include privilege escalation, remote code execution, logic errors, and SQL injection.&lt;br /&gt;
&lt;br /&gt;
===Review Process Overview===&lt;br /&gt;
A majority of the plugin review process involves manual inspection of the plugin and review of the plugin&#039;s code. The following steps outline a basic process followed when reviewing plugins.&lt;br /&gt;
* A test installation of WordPress is used (see Turnkey WordPress: http://www.turnkeylinux.org/wordpress)&lt;br /&gt;
** The WordPress version must match that of the blog on which the plugin will be installed.&lt;br /&gt;
* If the plugin is being installed on a high profile blog, a staging installation may already be available. It is best to test here to replicate the production environment as best as possible.&lt;br /&gt;
* The plugin to be tested is downloaded from WordPress using the most recent version available.&lt;br /&gt;
* Security testing is performed (see next section for detailed testing information).&lt;br /&gt;
* If any issues are detected, the developer is contacted and asked to release a fix.&lt;br /&gt;
* A blocking bug is created pertaining to the fix. If the developer does not respond within a reasonable time frame, our developers may fix the issue on a local installation.&lt;br /&gt;
&lt;br /&gt;
===Detailed Testing Procedures===&lt;br /&gt;
* Determine the functionality of the plugin. Most plugins add a set of features to the admin page, but some are much more complex.&lt;br /&gt;
** Do the features allow non-admin users to add data or enter input on the site?&lt;br /&gt;
** Is that data treated as unsafe (i.e. not used directly in SQL statements or reflected back to other users or admins)?&lt;br /&gt;
** Does the plugin alter the login process, add additional users, or grant additional rights to non-admins?&lt;br /&gt;
* View the settings page for the plugin and test the inputs for cross-site scripting and SQL injection vulnerabilities.&lt;br /&gt;
** Note that some plugins enable the use of unfiltered HTML within the admin page. This behavior is allowed unless the plugin also exposes this functionality to non-admins.&lt;br /&gt;
** Ensure that unfiltered HTML is being used in expected places. For example, unfiltered HTML may be allowed when editing posts, but some input boxes can be XSS&#039;ed with &amp;quot;/&amp;gt;&amp;lt;script&amp;gt;alert(1);&amp;lt;/script&amp;gt;. This breaks out of the settings input box and allows unfiltered code execution on the settings page.&lt;br /&gt;
* View the methods used to save settings. Some plugins use POST (desirable) and others use GET.&lt;br /&gt;
** Where GET is used, especially check all settings for potential XSS as an admin can be sent a link containing the XSS and it will be executed immediately (or following login).&lt;br /&gt;
** If POST is used, check for potential CSRF issues. A nonce should be used to protect the admin page from CSRF.&lt;br /&gt;
* View the code of the plugin itself (this can be done in WordPress by clicking Plugins &amp;gt; Editor and selecting the plugin).&lt;br /&gt;
** Check for all input accepted by the plugin ($_GET, $_REQUEST, $_POST).&lt;br /&gt;
** Fuzz all inputs for potential XSS and SQL injection vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
Do the varied nature of plugins, it is impossible to have a &amp;quot;one stop&amp;quot; checklist. Each plugin must be manually checked and the testing procedures altered depending on the functionality. The above process is a general guideline and does not apply to every plugin.&lt;br /&gt;
&lt;br /&gt;
= Security Review Documentation =&lt;br /&gt;
== Structure of a Security Review ==&lt;br /&gt;
&lt;br /&gt;
This document covers five distinct activities and the documentation they produce when a security review is performed.  Note that this guidance is prescriptive in that each component of a security review document should be produced, or a statement explaining why it wasn&#039;t should be included.&lt;br /&gt;
&lt;br /&gt;
The goal of this document is to ensure that the Security Assurance team has a consistent format for the documentation we produce without enforcing a strict structure on how security review and testing is performed.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
An architecture diagram illustrates how the various components of the service communicate with one another.&lt;br /&gt;
&lt;br /&gt;
The goal of the architecture diagram is to give the audience a high-level visual representation of how the different components of a system will interact together.  &lt;br /&gt;
&lt;br /&gt;
An example of this is the diagram below, which is from the old Mozilla F1 service.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.mozilla.org/images/thumb/7/78/F1design.png/392px-F1design.png Mozilla F1 Architecture Diagram]&lt;br /&gt;
&lt;br /&gt;
The F1 service had multiple components:&lt;br /&gt;
* a Firefox Add-on that hosted a pane loaded from the Mozilla F1 service that facilitated posting (&#039;sharing&#039;) content across multiple services&lt;br /&gt;
* a back-end that abstracted the &#039;sharing&#039; process such that a core set of common functions to facilitate easy incorporation of addition services without client updates&lt;br /&gt;
&lt;br /&gt;
Rather than providing a detailed assessment of how messages are passed between the various components, this diagram illustrates how the different components interact with one another, but not details about the interactions, or what data is shared between them.&lt;br /&gt;
&lt;br /&gt;
The goal of this diagram is to provide a concise overview of the system that provides a frame of reference when someone new to the system is reviewing supporting documentation or code.&lt;br /&gt;
&lt;br /&gt;
==== Key Attributes ====&lt;br /&gt;
* Clarity; brief descriptions of which components are communicating&lt;br /&gt;
* Illustrates the boundaries between different services&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples ====&lt;br /&gt;
*  [https://people.mozilla.com/~yboily/identity/assets/images-1/s31.b.jpeg BrowserID Protocol High Level]&lt;br /&gt;
*  [https://people.mozilla.com/~ckoenig/App-Marketplace.jpg Apps MarketPlace] TODO - Replace Me With A Simple Diagram!&lt;br /&gt;
&lt;br /&gt;
=== Detailed Application Diagram ===&lt;br /&gt;
A Detailed Application Diagram is essentially a Data-flow diagram;  a data flow diagram enumerates each application or service that is a component of a system, and illustrates each of the paths data can flow through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://wiki.mozilla.org/images/2/22/BrowserID-Threat-Model.png BrowserID Detailed Diagram]&lt;br /&gt;
&lt;br /&gt;
Note that a data-flow diagram is only one example of how this information.  The goal is to effectively communicate to the audience how data moves through the system, where different operations are performed, and if detailed enough, how different roles within the system can access different operations.&lt;br /&gt;
&lt;br /&gt;
When designing the detailed application diagram it can be useful to assemble a list of each of the subjects in a system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO - add references for subject/object/operations in relation to access control models.&lt;br /&gt;
&lt;br /&gt;
==== Key Attributes ====&lt;br /&gt;
* Clarity; labels for objects are brief, and contain clear references that can be used to cross-reference other documentation&lt;br /&gt;
* Detailed; ensure that all roles and operations are clearly presented&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples====&lt;br /&gt;
* [https://wiki.mozilla.org/images/b/bf/MozillaF1-Diagram.png Mozilla F1 Detailed Application Diagram]&lt;br /&gt;
* [https://wiki.mozilla.org/images/e/ee/BrowserID-Protocol.png BrowserID Protocol]&lt;br /&gt;
* [https://people.mozilla.com/~ckoenig/App-Marketplace.jpg AppStore Threat Model]&lt;br /&gt;
&lt;br /&gt;
=== Data-flow Enumeration ===&lt;br /&gt;
&lt;br /&gt;
Data-flow enumeration is an important supplement to the Detailed Application Diagram; it acts as a reference for someone reading the diagram to look up the nature of what information is associated with a call or request between two components.&lt;br /&gt;
&lt;br /&gt;
At a minimum, the flow enumeration should be a table indicating an identifier, subject, object, and the operation being performed.&lt;br /&gt;
&lt;br /&gt;
In the example below, an excerpt from the [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#1._Provisioning  BrowserID provisioning enumeration], the subject, object, and operation are labelled origin, destination, and description, respectively.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;fullwidth-table&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Origin&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Destination&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1.A||Relying Party||Implementation Provider|| An interaction with the Relying party invokes the Implementation Provider (IP).&lt;br /&gt;
|-&lt;br /&gt;
|1.B||Implementation Provider||Identity Authority||The IP either has an expired certificate, or no certificate, and directs the client to an Identity Authority landing page for authentication.  This authentication process is out of scope of the protocol, and implementation dependent.&lt;br /&gt;
|-&lt;br /&gt;
|1.C||Identity Authority||Identity Authority||Code from the IP landing page invokes genKeyPair() to generate a keypair.&lt;br /&gt;
|-&lt;br /&gt;
|1.D||Identity Authority||Implementation Provider||The IP saves the keypair in the client&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In addition to including the subject, object, operation columns, it can be helpful to include an explicit list of fields which are considered sensitive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples ====&lt;br /&gt;
* [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#1._Provisioning BrowserID Data-flow Enumeration]&lt;br /&gt;
&lt;br /&gt;
=== Threat Analysis ===&lt;br /&gt;
&lt;br /&gt;
When performing a security review of an application one of the most important components is a threat analysis.  There is a great deal of documentation on how to perform threat analysis, and a number of different techniques that can be used:&lt;br /&gt;
&lt;br /&gt;
* [https://www.owasp.org/index.php/Threat_Risk_Modeling OWASP Threat Risk Modelling]&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/security/aa570413 Microsoft Application Threat Modelling]&lt;br /&gt;
* [http://csrc.nist.gov/publications/nistpubs/800-30/sp800-30.pdf NIST Risk Management Guide][pdf]&lt;br /&gt;
&lt;br /&gt;
For the purposes of a Mozilla Security Review, the means by which someone identifies the threats and risks associated with an application is important, but not specified.  If you have questions about how to perform this type of analysis, please contact a member of our team!  &lt;br /&gt;
&lt;br /&gt;
The resulting threat analysis should be formatted in a clear format, including the following details:&lt;br /&gt;
&lt;br /&gt;
* ID - a identifier for the threat&lt;br /&gt;
* Title - a concise description of the threat&lt;br /&gt;
* Threat - a description of the threat&lt;br /&gt;
* Mitigations - a recommendation for a control that can be implemented [1]&lt;br /&gt;
* Threat Agent - a list of the potential actors considered that would exploit a vulnerability.&lt;br /&gt;
* Notes - Related comments that contribute to the analysis, but don&#039;t belong in other columns&lt;br /&gt;
* Rating - A qualitative scoring for a vulnerability in the context of this application [2]&lt;br /&gt;
* Impact - A qualitative score representing the impact should a vulnerability be exploited&lt;br /&gt;
* Likelihood - A qualitative score representing the likelihood of a vulnerability being exploited. [3]&lt;br /&gt;
&lt;br /&gt;
See [https://wiki.mozilla.org/Security/RiskRatings Risk Ratings] for details of how to calculate the qualitative scores.&lt;br /&gt;
&lt;br /&gt;
TODO - Glossary Threat, Threat Agent, Vulnerability, Exploit&lt;br /&gt;
[1] In the case of a threat analysis that contains multiple threats that can be resolved by one or more different controls it may be beneficial to include a separate control table, and list references to controls in that table instead.&lt;br /&gt;
[2] The rating is calculated by multiplying the impact by the likelihood.  This is a naive method, but it&#039;s what we have!&lt;br /&gt;
[3] In the case where different threat agents have different likelihoods, list the likelihoods highest to lowest, in the same order as the threat agents.&lt;br /&gt;
&lt;br /&gt;
Below is an excerpt from the [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#Threat_Model BrowserID Threat Analysis]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;fullwidth-table sortable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Title&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Threat&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Proposed Mitigations&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Threat Agent&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Rating&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Likelihood&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Impact&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 1||SIA may introduce compliance issues||Operating a Secondary Identity Authority may induce compliance requirements with regards to logging user information||Part of the goal of BrowserID is to have Primary Identity Authorities take on this risk as part of their other operations.  This can be somewhat mitigated by eliminating support for the webfinger verification process.||Governments, Lawyers||12||3||Governments and other legal actors have the ability to request  information from us, either through subpoenas, NSLs, etc.  While we hold information that can link user identities to services this information will be a source of risk.||4 – Reputation||Although we are required to comply, and Mozilla would fight such a request to the degree permitted, we would still receive negative press.&lt;br /&gt;
|-&lt;br /&gt;
| 2||Webfinger Information Leak||Use of the webfinger service for verification discloses each authentication attempt from the Relying Party to the Identity Authority||Implement verification using certificates||Malicious Identity Authority||25||5||This information disclosure is a part of the protocol.||5 – Privacy||This is probably a clear violation of our privacy policies.&lt;br /&gt;
|-&lt;br /&gt;
| 3||Chrome Code Injection||Attacker controlled parameters could permit injection of script into browser chrome.||Ensure that any data controlled by the user or relying party is emitted using output encoding.||Malicious Relying Party, Malicious User, Malicious Identity Authority||4||1||Code review and testing should prevent this occuring.  The technical complexity of this attack is higher than a vanilla XSS.||4 – User||This gives an attacker the ability to execute code in the context of browser chrome.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples ====&lt;br /&gt;
* Mozilla F1 Threats [https://wiki.mozilla.org/Security/Reviews/F1#Threat_Model]&lt;br /&gt;
* BrowserID Threats [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#Threat_Model]&lt;br /&gt;
&lt;br /&gt;
=== Security Testing ===&lt;br /&gt;
&lt;br /&gt;
The security test plan is a brief explanation of security testing that should be performed, and should include an explanation of what tasks are to be performed, and the approximate amount of time spent performing those tasks.&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Security/ReviewProcess&amp;diff=462444</id>
		<title>Security/ReviewProcess</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Security/ReviewProcess&amp;diff=462444"/>
		<updated>2012-08-20T18:09:35Z</updated>

		<summary type="html">&lt;p&gt;Mfuller: /* Security Review Processes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains draft documentation of our security review processes.&lt;br /&gt;
&lt;br /&gt;
= Security Review Processes =&lt;br /&gt;
==Web Application Review Process==&lt;br /&gt;
Web applications vary dramatically in design and functionality making it difficult to create a single use-case checklist for security reviews. However, most applications undergo the following checks during the security review process.&lt;br /&gt;
&lt;br /&gt;
===General Web Application Review Process===&lt;br /&gt;
Many of these questions are taken from the secure coding guidelines page: https://wiki.mozilla.org/WebAppSec/Secure_Coding_Guidelines&lt;br /&gt;
&lt;br /&gt;
====Access Information====&lt;br /&gt;
* How is the application accessed?&lt;br /&gt;
* Is the application internal or publicly available?&lt;br /&gt;
* If it is internal, what mechanism prevents non-members from accessing it?&lt;br /&gt;
* Are there links to user-only resources displayed to non-users?&lt;br /&gt;
* Are login pages secured with SSL over HTTPS?&lt;br /&gt;
* If HTTPS is used, is Strict Transport Security set?&lt;br /&gt;
&lt;br /&gt;
====Infrastructure and Backends====&lt;br /&gt;
* What languages do the applications use?&lt;br /&gt;
* What database language is used if applicable?&lt;br /&gt;
* Are the running versions up to date?&lt;br /&gt;
* What server is it running on?&lt;br /&gt;
&lt;br /&gt;
====Accounts and Passwords====&lt;br /&gt;
* If the mechanism to prevent general access is a password, how is the signup process handled?&lt;br /&gt;
* How is account information stored?&lt;br /&gt;
* Are passwords properly stored within databases if applicable?&lt;br /&gt;
* Is a password policy in place?&lt;br /&gt;
* Are accounts locked-out after a number of invalid logins?&lt;br /&gt;
* Are passwords 8 characters or greater?&lt;br /&gt;
* Do passwords use both numbers and letters (and possibly symbols)?&lt;br /&gt;
* Is there a blacklist of common passwords?&lt;br /&gt;
* Do passwords expire after X days and require a reset?&lt;br /&gt;
* Are invalid logins logged?&lt;br /&gt;
* Is there a lockout after X invalid attempts?&lt;br /&gt;
* Is the error message for lockout generic (does not include if user/pass is valid)?&lt;br /&gt;
* How are password resets handled (i.e. email, security question, etc.)?&lt;br /&gt;
* Do emails sent after signup/reset contain a session link? (should not)&lt;br /&gt;
* Do email verification codes expire after one use or 8 hours?&lt;br /&gt;
* Is password reuse limited/prevented?&lt;br /&gt;
&lt;br /&gt;
====Session Management====&lt;br /&gt;
* How long are session cookies stored?&lt;br /&gt;
* Are session tokens 128-bit or greater?&lt;br /&gt;
* Is session ID token creation handled by the server (or cryptographically if locally)?&lt;br /&gt;
* Do authenticated sessions timeout after 15 minutes?&lt;br /&gt;
* Is the Secure Flag enabled for all set cookies?&lt;br /&gt;
* Is the HTTP-Only flag used to disable malicious script access to the session ID?&lt;br /&gt;
* Are new session ids created on login?&lt;br /&gt;
* On logout, are session ids invalidated?&lt;br /&gt;
&lt;br /&gt;
====Third-Party Resources====&lt;br /&gt;
* Are third-party resources used (i.e. JavaScript libraries, images, CSS, etc.)?&lt;br /&gt;
* Can those resources be trusted / are they from reputable sources?&lt;br /&gt;
* Is there a chance the resource could be compromised?&lt;br /&gt;
* Is it possible to host the resources locally to mitigate risks?&lt;br /&gt;
* Is a third-party responsible for storage of user data?&lt;br /&gt;
* Does the application connect with services like Facebook, Twitter, etc?&lt;br /&gt;
&lt;br /&gt;
====Data Handling====&lt;br /&gt;
* What kind of data is transferred between the user and the application?&lt;br /&gt;
* Is this data generated by the user or generated automatically?&lt;br /&gt;
* Can the data be trusted?&lt;br /&gt;
* How is the data sent to the application (i.e. JSON format, plain-text, GET/POST, etc.)?&lt;br /&gt;
* How is the data handled by the server/application?&lt;br /&gt;
* Can the data be manipulated in transit?&lt;br /&gt;
* What happens if the data is altered?&lt;br /&gt;
* What is done with the data once it is received (i.e. stored in a database, displayed to users)?&lt;br /&gt;
* Is any data storage done via cookies? If so, what kind of data is stored via this method?&lt;br /&gt;
&lt;br /&gt;
====Uploaded Data====&lt;br /&gt;
* Can the user upload data to the application?&lt;br /&gt;
* Are extensions, file size, file type (not only based on extension), etc. checked?&lt;br /&gt;
* Are files renamed upon upload?&lt;br /&gt;
* Is the correct content-type used?&lt;br /&gt;
&lt;br /&gt;
====Data Sensitivity====&lt;br /&gt;
* What kind of data is being stored and/or manipulated by the application?&lt;br /&gt;
* Does this data need to be encrypted in transit? In storage?&lt;br /&gt;
* What is the impact if this data is lost/stolen?&lt;br /&gt;
* Is secure/sensitive data sent over SSL?&lt;br /&gt;
&lt;br /&gt;
====Application Administration====&lt;br /&gt;
* Is there an administration console?&lt;br /&gt;
* Can it be accessed publicly?&lt;br /&gt;
* How is it secured if so?&lt;br /&gt;
* Are correct methods used to prevent admin actions from being performed outside of the admin console (i.e. using CSRF tokens)?&lt;br /&gt;
* Are there any configuration pages that should not be made public?&lt;br /&gt;
&lt;br /&gt;
====Security Coding Flaws====&lt;br /&gt;
* Have all user inputs been sanitized?&lt;br /&gt;
* Is a maximum size for data (input or uploads) defined?&lt;br /&gt;
* Do all URL variables pass through sanitization?&lt;br /&gt;
* Is data from databases escaped properly?&lt;br /&gt;
* Are CSRF tokens used to prevent POSTs from outside websites?&lt;br /&gt;
* If a database is used, are protections against SQL injection in place?&lt;br /&gt;
* Is validation done on the server side (not just client-side)?&lt;br /&gt;
* Is output encoded in addition to sanitization of input?&lt;br /&gt;
* Does the user ever send data to the OS level?&lt;br /&gt;
* Are x-frame options sent to “deny” or “sameorigin”?&lt;br /&gt;
* Is debug mode disabled?&lt;br /&gt;
&lt;br /&gt;
===Additional Resources===&lt;br /&gt;
Coming soon&lt;br /&gt;
&lt;br /&gt;
==WordPress Plugin Review Process==&lt;br /&gt;
Before being installed, all WordPress plugins must be reviewed by the security team. These reviews are simpler than full site reviews and ensure that the plugin being installed does not compromise the security of the blog/site.&lt;br /&gt;
&lt;br /&gt;
===Common Attack Vectors===&lt;br /&gt;
The most common WordPress security issues present in plugins are cross-site scripting vulnerabilities (both persistent and reflected). Other vulnerabilities to check for include privilege escalation, remote code execution, logic errors, and SQL injection.&lt;br /&gt;
&lt;br /&gt;
===Review Process Overview===&lt;br /&gt;
A majority of the plugin review process involves manual inspection of the plugin and review of the plugin&#039;s code. The following steps outline a basic process followed when reviewing plugins.&lt;br /&gt;
* A test installation of WordPress is used (see Turnkey WordPress: http://www.turnkeylinux.org/wordpress)&lt;br /&gt;
** The WordPress version must match that of the blog on which the plugin will be installed.&lt;br /&gt;
* If the plugin is being installed on a high profile blog, a staging installation may already be available. It is best to test here to replicate the production environment as best as possible.&lt;br /&gt;
* The plugin to be tested is downloaded from WordPress using the most recent version available.&lt;br /&gt;
* Security testing is performed (see next section for detailed testing information).&lt;br /&gt;
* If any issues are detected, the developer is contacted and asked to release a fix.&lt;br /&gt;
* A blocking bug is created pertaining to the fix. If the developer does not respond within a reasonable time frame, our developers may fix the issue on a local installation.&lt;br /&gt;
&lt;br /&gt;
===Detailed Testing Procedures===&lt;br /&gt;
* Determine the functionality of the plugin. Most plugins add a set of features to the admin page, but some are much more complex.&lt;br /&gt;
** Do the features allow non-admin users to add data or enter input on the site?&lt;br /&gt;
** Is that data treated as unsafe (i.e. not used directly in SQL statements or reflected back to other users or admins)?&lt;br /&gt;
** Does the plugin alter the login process, add additional users, or grant additional rights to non-admins?&lt;br /&gt;
* View the settings page for the plugin and test the inputs for cross-site scripting and SQL injection vulnerabilities.&lt;br /&gt;
** Note that some plugins enable the use of unfiltered HTML within the admin page. This behavior is allowed unless the plugin also exposes this functionality to non-admins.&lt;br /&gt;
** Ensure that unfiltered HTML is being used in expected places. For example, unfiltered HTML may be allowed when editing posts, but some input boxes can be XSS&#039;ed with &amp;quot;/&amp;gt;&amp;lt;script&amp;gt;alert(1);&amp;lt;/script&amp;gt;. This breaks out of the settings input box and allows unfiltered code execution on the settings page.&lt;br /&gt;
* View the methods used to save settings. Some plugins use POST (desirable) and others use GET.&lt;br /&gt;
** Where GET is used, especially check all settings for potential XSS as an admin can be sent a link containing the XSS and it will be executed immediately (or following login).&lt;br /&gt;
** If POST is used, check for potential CSRF issues. A nonce should be used to protect the admin page from CSRF.&lt;br /&gt;
* View the code of the plugin itself (this can be done in WordPress by clicking Plugins &amp;gt; Editor and selecting the plugin).&lt;br /&gt;
** Check for all input accepted by the plugin ($_GET, $_REQUEST, $_POST).&lt;br /&gt;
** Fuzz all inputs for potential XSS and SQL injection vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
Do the varied nature of plugins, it is impossible to have a &amp;quot;one stop&amp;quot; checklist. Each plugin must be manually checked and the testing procedures altered depending on the functionality. The above process is a general guideline and does not apply to every plugin.&lt;br /&gt;
&lt;br /&gt;
= Security Review Documentation =&lt;br /&gt;
== Structure of a Security Review ==&lt;br /&gt;
&lt;br /&gt;
This document covers five distinct activities and the documentation they produce when a security review is performed.  Note that this guidance is prescriptive in that each component of a security review document should be produced, or a statement explaining why it wasn&#039;t should be included.&lt;br /&gt;
&lt;br /&gt;
The goal of this document is to ensure that the Security Assurance team has a consistent format for the documentation we produce without enforcing a strict structure on how security review and testing is performed.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Diagram ===&lt;br /&gt;
&lt;br /&gt;
An architecture diagram illustrates how the various components of the service communicate with one another.&lt;br /&gt;
&lt;br /&gt;
The goal of the architecture diagram is to give the audience a high-level visual representation of how the different components of a system will interact together.  &lt;br /&gt;
&lt;br /&gt;
An example of this is the diagram below, which is from the old Mozilla F1 service.&lt;br /&gt;
&lt;br /&gt;
[https://wiki.mozilla.org/images/thumb/7/78/F1design.png/392px-F1design.png Mozilla F1 Architecture Diagram]&lt;br /&gt;
&lt;br /&gt;
The F1 service had multiple components:&lt;br /&gt;
* a Firefox Add-on that hosted a pane loaded from the Mozilla F1 service that facilitated posting (&#039;sharing&#039;) content across multiple services&lt;br /&gt;
* a back-end that abstracted the &#039;sharing&#039; process such that a core set of common functions to facilitate easy incorporation of addition services without client updates&lt;br /&gt;
&lt;br /&gt;
Rather than providing a detailed assessment of how messages are passed between the various components, this diagram illustrates how the different components interact with one another, but not details about the interactions, or what data is shared between them.&lt;br /&gt;
&lt;br /&gt;
The goal of this diagram is to provide a concise overview of the system that provides a frame of reference when someone new to the system is reviewing supporting documentation or code.&lt;br /&gt;
&lt;br /&gt;
==== Key Attributes ====&lt;br /&gt;
* Clarity; brief descriptions of which components are communicating&lt;br /&gt;
* Illustrates the boundaries between different services&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples ====&lt;br /&gt;
*  [https://people.mozilla.com/~yboily/identity/assets/images-1/s31.b.jpeg BrowserID Protocol High Level]&lt;br /&gt;
*  [https://people.mozilla.com/~ckoenig/App-Marketplace.jpg Apps MarketPlace] TODO - Replace Me With A Simple Diagram!&lt;br /&gt;
&lt;br /&gt;
=== Detailed Application Diagram ===&lt;br /&gt;
A Detailed Application Diagram is essentially a Data-flow diagram;  a data flow diagram enumerates each application or service that is a component of a system, and illustrates each of the paths data can flow through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://wiki.mozilla.org/images/2/22/BrowserID-Threat-Model.png BrowserID Detailed Diagram]&lt;br /&gt;
&lt;br /&gt;
Note that a data-flow diagram is only one example of how this information.  The goal is to effectively communicate to the audience how data moves through the system, where different operations are performed, and if detailed enough, how different roles within the system can access different operations.&lt;br /&gt;
&lt;br /&gt;
When designing the detailed application diagram it can be useful to assemble a list of each of the subjects in a system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO - add references for subject/object/operations in relation to access control models.&lt;br /&gt;
&lt;br /&gt;
==== Key Attributes ====&lt;br /&gt;
* Clarity; labels for objects are brief, and contain clear references that can be used to cross-reference other documentation&lt;br /&gt;
* Detailed; ensure that all roles and operations are clearly presented&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples====&lt;br /&gt;
* [https://wiki.mozilla.org/images/b/bf/MozillaF1-Diagram.png Mozilla F1 Detailed Application Diagram]&lt;br /&gt;
* [https://wiki.mozilla.org/images/e/ee/BrowserID-Protocol.png BrowserID Protocol]&lt;br /&gt;
* [https://people.mozilla.com/~ckoenig/App-Marketplace.jpg AppStore Threat Model]&lt;br /&gt;
&lt;br /&gt;
=== Data-flow Enumeration ===&lt;br /&gt;
&lt;br /&gt;
Data-flow enumeration is an important supplement to the Detailed Application Diagram; it acts as a reference for someone reading the diagram to look up the nature of what information is associated with a call or request between two components.&lt;br /&gt;
&lt;br /&gt;
At a minimum, the flow enumeration should be a table indicating an identifier, subject, object, and the operation being performed.&lt;br /&gt;
&lt;br /&gt;
In the example below, an excerpt from the [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#1._Provisioning  BrowserID provisioning enumeration], the subject, object, and operation are labelled origin, destination, and description, respectively.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;fullwidth-table&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Origin&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Destination&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1.A||Relying Party||Implementation Provider|| An interaction with the Relying party invokes the Implementation Provider (IP).&lt;br /&gt;
|-&lt;br /&gt;
|1.B||Implementation Provider||Identity Authority||The IP either has an expired certificate, or no certificate, and directs the client to an Identity Authority landing page for authentication.  This authentication process is out of scope of the protocol, and implementation dependent.&lt;br /&gt;
|-&lt;br /&gt;
|1.C||Identity Authority||Identity Authority||Code from the IP landing page invokes genKeyPair() to generate a keypair.&lt;br /&gt;
|-&lt;br /&gt;
|1.D||Identity Authority||Implementation Provider||The IP saves the keypair in the client&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In addition to including the subject, object, operation columns, it can be helpful to include an explicit list of fields which are considered sensitive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples ====&lt;br /&gt;
* [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#1._Provisioning BrowserID Data-flow Enumeration]&lt;br /&gt;
&lt;br /&gt;
=== Threat Analysis ===&lt;br /&gt;
&lt;br /&gt;
When performing a security review of an application one of the most important components is a threat analysis.  There is a great deal of documentation on how to perform threat analysis, and a number of different techniques that can be used:&lt;br /&gt;
&lt;br /&gt;
* [https://www.owasp.org/index.php/Threat_Risk_Modeling OWASP Threat Risk Modelling]&lt;br /&gt;
* [http://msdn.microsoft.com/en-us/security/aa570413 Microsoft Application Threat Modelling]&lt;br /&gt;
* [http://csrc.nist.gov/publications/nistpubs/800-30/sp800-30.pdf NIST Risk Management Guide][pdf]&lt;br /&gt;
&lt;br /&gt;
For the purposes of a Mozilla Security Review, the means by which someone identifies the threats and risks associated with an application is important, but not specified.  If you have questions about how to perform this type of analysis, please contact a member of our team!  &lt;br /&gt;
&lt;br /&gt;
The resulting threat analysis should be formatted in a clear format, including the following details:&lt;br /&gt;
&lt;br /&gt;
* ID - a identifier for the threat&lt;br /&gt;
* Title - a concise description of the threat&lt;br /&gt;
* Threat - a description of the threat&lt;br /&gt;
* Mitigations - a recommendation for a control that can be implemented [1]&lt;br /&gt;
* Threat Agent - a list of the potential actors considered that would exploit a vulnerability.&lt;br /&gt;
* Notes - Related comments that contribute to the analysis, but don&#039;t belong in other columns&lt;br /&gt;
* Rating - A qualitative scoring for a vulnerability in the context of this application [2]&lt;br /&gt;
* Impact - A qualitative score representing the impact should a vulnerability be exploited&lt;br /&gt;
* Likelihood - A qualitative score representing the likelihood of a vulnerability being exploited. [3]&lt;br /&gt;
&lt;br /&gt;
See [https://wiki.mozilla.org/Security/RiskRatings Risk Ratings] for details of how to calculate the qualitative scores.&lt;br /&gt;
&lt;br /&gt;
TODO - Glossary Threat, Threat Agent, Vulnerability, Exploit&lt;br /&gt;
[1] In the case of a threat analysis that contains multiple threats that can be resolved by one or more different controls it may be beneficial to include a separate control table, and list references to controls in that table instead.&lt;br /&gt;
[2] The rating is calculated by multiplying the impact by the likelihood.  This is a naive method, but it&#039;s what we have!&lt;br /&gt;
[3] In the case where different threat agents have different likelihoods, list the likelihoods highest to lowest, in the same order as the threat agents.&lt;br /&gt;
&lt;br /&gt;
Below is an excerpt from the [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#Threat_Model BrowserID Threat Analysis]:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;fullwidth-table sortable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Title&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Threat&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Proposed Mitigations&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Threat Agent&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Rating&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Likelihood&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Impact&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|&#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| 1||SIA may introduce compliance issues||Operating a Secondary Identity Authority may induce compliance requirements with regards to logging user information||Part of the goal of BrowserID is to have Primary Identity Authorities take on this risk as part of their other operations.  This can be somewhat mitigated by eliminating support for the webfinger verification process.||Governments, Lawyers||12||3||Governments and other legal actors have the ability to request  information from us, either through subpoenas, NSLs, etc.  While we hold information that can link user identities to services this information will be a source of risk.||4 – Reputation||Although we are required to comply, and Mozilla would fight such a request to the degree permitted, we would still receive negative press.&lt;br /&gt;
|-&lt;br /&gt;
| 2||Webfinger Information Leak||Use of the webfinger service for verification discloses each authentication attempt from the Relying Party to the Identity Authority||Implement verification using certificates||Malicious Identity Authority||25||5||This information disclosure is a part of the protocol.||5 – Privacy||This is probably a clear violation of our privacy policies.&lt;br /&gt;
|-&lt;br /&gt;
| 3||Chrome Code Injection||Attacker controlled parameters could permit injection of script into browser chrome.||Ensure that any data controlled by the user or relying party is emitted using output encoding.||Malicious Relying Party, Malicious User, Malicious Identity Authority||4||1||Code review and testing should prevent this occuring.  The technical complexity of this attack is higher than a vanilla XSS.||4 – User||This gives an attacker the ability to execute code in the context of browser chrome.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Additional Examples ====&lt;br /&gt;
* Mozilla F1 Threats [https://wiki.mozilla.org/Security/Reviews/F1#Threat_Model]&lt;br /&gt;
* BrowserID Threats [https://wiki.mozilla.org/Security/Reviews/Identity/browserid#Threat_Model]&lt;br /&gt;
&lt;br /&gt;
=== Security Testing ===&lt;br /&gt;
&lt;br /&gt;
The security test plan is a brief explanation of security testing that should be performed, and should include an explanation of what tasks are to be performed, and the approximate amount of time spent performing those tasks.&lt;/div&gt;</summary>
		<author><name>Mfuller</name></author>
	</entry>
</feed>