<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vinaykbansal</id>
		<title>OWASP - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vinaykbansal"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Vinaykbansal"/>
		<updated>2026-04-25T12:15:13Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_IoTs_Project&amp;diff=164403</id>
		<title>Projects/OWASP IoTs Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_IoTs_Project&amp;diff=164403"/>
				<updated>2013-12-07T15:37:59Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Project About&lt;br /&gt;
| project_name =OWASP IoTs Project&lt;br /&gt;
| project_description =&amp;quot;Advances in technology have led to the creation of intelligent and connected devices -- Internet of Things (IoTs) -- that can sense and act upon the environment.  In not-so-distant future, IoTs will be pervasive in all aspects of human life such as: home, education, healthcare, and commerce.  Since IoTs will access and act upon physical and digital reality surrounding humans, their security and privacy is of prime importance.  A lack of appropriate security in IoTs can lead to grave outcomes including physical harm to humans.  It is crucial that we study the IoT architectures and technologies to uncover the security flaws. And guide developers how to securely develop IoTs.&lt;br /&gt;
&lt;br /&gt;
Goal of the project is to extensively research the various architectural models (peer-to-peer and client-server models) used by IoTs such as: Connected Home Devices (smart TVs, gaming consoles, toys) and Sensor devices (monitoring cameras, motion detectors). And identify the  flaws in design, implementation and communication models.One of the goal for this project is to publish these security flaws and associated risks. Second goal for the project is to provide the secure security architectural patterns for IoTs to guide secure design and development. &amp;quot;&lt;br /&gt;
| project_license =Creative Commons Attribution ShareAlike 3.0 License&lt;br /&gt;
| leader_name1 =Vinay Bansal&lt;br /&gt;
| leader_email1 =Vinaykbansal@owasp.org &lt;br /&gt;
| mailing_list_name = https://lists.owasp.org/mailman/listinfo/owasp_iots_project&lt;br /&gt;
| project_road_map = https://www.owasp.org/index.php/Projects/OWASP_IoTs_Project/Roadmap&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_IoTs_Project&amp;diff=164402</id>
		<title>OWASP IoTs Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_IoTs_Project&amp;diff=164402"/>
				<updated>2013-12-07T15:27:10Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* = Contributors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Main=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==OWASP IoTs==&lt;br /&gt;
&lt;br /&gt;
OWASP XXX is...&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Write a short introduction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Write a description that is just a few paragraphs long&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
OWASP XXX is free to use. It is licensed under the http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike 3.0 license], so you can copy, distribute and transmit the work, and you can adapt it, and use it commercially, but all provided that you attribute the work and if you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== What is XXX? ==&lt;br /&gt;
&lt;br /&gt;
OWASP XXX  provides:&lt;br /&gt;
&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Presentation ==&lt;br /&gt;
&lt;br /&gt;
Link to presentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&lt;br /&gt;
==== Leaders ====&lt;br /&gt;
*Vinay Bansal &lt;br /&gt;
*Pankaj Telang&lt;br /&gt;
*Shankar Babu&lt;br /&gt;
&lt;br /&gt;
=== Contributors ===&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&lt;br /&gt;
* [[OWASP_CISO_Survey]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
== Quick Download ==&lt;br /&gt;
&lt;br /&gt;
* Link to page/download&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
* [20 Nov 2013] News 2&lt;br /&gt;
* [30 Sep 2013] News 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Print ==&lt;br /&gt;
This project can be purchased as a print on demand book from Lulu.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects]]&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-builders-small.png|link=]]  &lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Cc-button-y-sa-small.png|link=http://creativecommons.org/licenses/by-sa/3.0/]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_CODE.jpg|link=]]&lt;br /&gt;
   |}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=FAQs=&lt;br /&gt;
&lt;br /&gt;
; Q1&lt;br /&gt;
: A1&lt;br /&gt;
&lt;br /&gt;
; Q2&lt;br /&gt;
: A2&lt;br /&gt;
&lt;br /&gt;
= Acknowledgements =&lt;br /&gt;
==Volunteers==&lt;br /&gt;
XXX is developed by a worldwide team of volunteers. The primary contributors to date have been:&lt;br /&gt;
&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
==Others==&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
= Road Map and Getting Involved =&lt;br /&gt;
As of XXX, the priorities are:&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
Involvement in the development and promotion of XXX is actively encouraged!&lt;br /&gt;
You do not have to be a security expert in order to contribute.&lt;br /&gt;
Some of the ways you can help:&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Project About=&lt;br /&gt;
{{:Projects/OWASP_Example_Project_About_Page}}  &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]  [[Category:OWASP_Builders]] [[Category:OWASP_Defenders]]  [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_IoTs_Project&amp;diff=164401</id>
		<title>OWASP IoTs Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_IoTs_Project&amp;diff=164401"/>
				<updated>2013-12-07T15:26:58Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Leaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Main=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==OWASP IoTs==&lt;br /&gt;
&lt;br /&gt;
OWASP XXX is...&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Write a short introduction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Write a description that is just a few paragraphs long&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
OWASP XXX is free to use. It is licensed under the http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike 3.0 license], so you can copy, distribute and transmit the work, and you can adapt it, and use it commercially, but all provided that you attribute the work and if you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== What is XXX? ==&lt;br /&gt;
&lt;br /&gt;
OWASP XXX  provides:&lt;br /&gt;
&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Presentation ==&lt;br /&gt;
&lt;br /&gt;
Link to presentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&lt;br /&gt;
==== Leaders ====&lt;br /&gt;
*Vinay Bansal &lt;br /&gt;
*Pankaj Telang&lt;br /&gt;
*Shankar Babu&lt;br /&gt;
&lt;br /&gt;
==== Contributors ===&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&lt;br /&gt;
* [[OWASP_CISO_Survey]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
== Quick Download ==&lt;br /&gt;
&lt;br /&gt;
* Link to page/download&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
* [20 Nov 2013] News 2&lt;br /&gt;
* [30 Sep 2013] News 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Print ==&lt;br /&gt;
This project can be purchased as a print on demand book from Lulu.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects]]&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-builders-small.png|link=]]  &lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Cc-button-y-sa-small.png|link=http://creativecommons.org/licenses/by-sa/3.0/]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_CODE.jpg|link=]]&lt;br /&gt;
   |}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=FAQs=&lt;br /&gt;
&lt;br /&gt;
; Q1&lt;br /&gt;
: A1&lt;br /&gt;
&lt;br /&gt;
; Q2&lt;br /&gt;
: A2&lt;br /&gt;
&lt;br /&gt;
= Acknowledgements =&lt;br /&gt;
==Volunteers==&lt;br /&gt;
XXX is developed by a worldwide team of volunteers. The primary contributors to date have been:&lt;br /&gt;
&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
==Others==&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
= Road Map and Getting Involved =&lt;br /&gt;
As of XXX, the priorities are:&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
Involvement in the development and promotion of XXX is actively encouraged!&lt;br /&gt;
You do not have to be a security expert in order to contribute.&lt;br /&gt;
Some of the ways you can help:&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Project About=&lt;br /&gt;
{{:Projects/OWASP_Example_Project_About_Page}}  &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]  [[Category:OWASP_Builders]] [[Category:OWASP_Defenders]]  [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_IoTs_Project&amp;diff=164400</id>
		<title>OWASP IoTs Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_IoTs_Project&amp;diff=164400"/>
				<updated>2013-12-07T15:26:33Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Main=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width:100%;height:160px;border:0,margin:0;overflow: hidden;&amp;quot;&amp;gt;[[File:OWASP_Project_Header.jpg|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;padding: 0;margin:0;margin-top:10px;text-align:left;&amp;quot; |-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
==OWASP IoTs==&lt;br /&gt;
&lt;br /&gt;
OWASP XXX is...&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Write a short introduction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Write a description that is just a few paragraphs long&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Licensing==&lt;br /&gt;
OWASP XXX is free to use. It is licensed under the http://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike 3.0 license], so you can copy, distribute and transmit the work, and you can adapt it, and use it commercially, but all provided that you attribute the work and if you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;border-right: 1px dotted gray;padding-right:25px;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== What is XXX? ==&lt;br /&gt;
&lt;br /&gt;
OWASP XXX  provides:&lt;br /&gt;
&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Presentation ==&lt;br /&gt;
&lt;br /&gt;
Link to presentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Leader ==&lt;br /&gt;
&lt;br /&gt;
==== Leaders ====&lt;br /&gt;
*Vinay Bansal &lt;br /&gt;
*Pankaj Telang&lt;br /&gt;
*Shankar Babu&lt;br /&gt;
&lt;br /&gt;
*ontributors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related Projects ==&lt;br /&gt;
&lt;br /&gt;
* [[OWASP_CISO_Survey]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot;  style=&amp;quot;padding-left:25px;width:200px;&amp;quot; | &lt;br /&gt;
&lt;br /&gt;
== Quick Download ==&lt;br /&gt;
&lt;br /&gt;
* Link to page/download&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== News and Events ==&lt;br /&gt;
* [20 Nov 2013] News 2&lt;br /&gt;
* [30 Sep 2013] News 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== In Print ==&lt;br /&gt;
This project can be purchased as a print on demand book from Lulu.com&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Classifications==&lt;br /&gt;
&lt;br /&gt;
   {| width=&amp;quot;200&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; rowspan=&amp;quot;2&amp;quot;| [[File:Owasp-incubator-trans-85.png|link=https://www.owasp.org/index.php/OWASP_Project_Stages#tab=Incubator_Projects]]&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-builders-small.png|link=]]  &lt;br /&gt;
   |-&lt;br /&gt;
   | align=&amp;quot;center&amp;quot; valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot;| [[File:Owasp-defenders-small.png|link=]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Cc-button-y-sa-small.png|link=http://creativecommons.org/licenses/by-sa/3.0/]]&lt;br /&gt;
   |-&lt;br /&gt;
   | colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;  | [[File:Project_Type_Files_CODE.jpg|link=]]&lt;br /&gt;
   |}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=FAQs=&lt;br /&gt;
&lt;br /&gt;
; Q1&lt;br /&gt;
: A1&lt;br /&gt;
&lt;br /&gt;
; Q2&lt;br /&gt;
: A2&lt;br /&gt;
&lt;br /&gt;
= Acknowledgements =&lt;br /&gt;
==Volunteers==&lt;br /&gt;
XXX is developed by a worldwide team of volunteers. The primary contributors to date have been:&lt;br /&gt;
&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
==Others==&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
= Road Map and Getting Involved =&lt;br /&gt;
As of XXX, the priorities are:&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
Involvement in the development and promotion of XXX is actively encouraged!&lt;br /&gt;
You do not have to be a security expert in order to contribute.&lt;br /&gt;
Some of the ways you can help:&lt;br /&gt;
* xxx&lt;br /&gt;
* xxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Project About=&lt;br /&gt;
{{:Projects/OWASP_Example_Project_About_Page}}  &lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]  [[Category:OWASP_Builders]] [[Category:OWASP_Defenders]]  [[Category:OWASP_Document]]&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:Vinaykbansal&amp;diff=159420</id>
		<title>User:Vinaykbansal</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:Vinaykbansal&amp;diff=159420"/>
				<updated>2013-09-29T15:19:14Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Vinay K. Bansal works as a Senior Information Security Architect in Cisco’s Corporate Security Programs Office (Infosec). He is the global architectural lead for Cisco's Cloud  hosted offerings  (such as WebEx, Social, Jabber,..).  In his role Vinay focuses on doing architectural assessments and improving security of Cisco's hosted products, IT Web Applications, databases and mobile services. Vinay has 20+ years of IT industry experience in successfully leading; architecting and implementing IT based solutions with focus on security/Internet/e-commerce applications. Vinay worked at various Fortune 500 companies including Cisco (last 9 years), IBM, Nokia, Experian, and Plessey Telecom (UK). Vinay has presented in various conferences including CiscoLive, SANS, OWASP, iFront. Vinay holds a Master's Degree in Computer Science from Duke University.&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Cloud_%E2%80%90_10_Project/Releases/Initial_Pre-Alpha_List_of_OWASP_Cloud_Top_10_Security_Risks&amp;diff=136317</id>
		<title>Projects/OWASP Cloud ‐ 10 Project/Releases/Initial Pre-Alpha List of OWASP Cloud Top 10 Security Risks</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Cloud_%E2%80%90_10_Project/Releases/Initial_Pre-Alpha_List_of_OWASP_Cloud_Top_10_Security_Risks&amp;diff=136317"/>
				<updated>2012-09-24T10:45:29Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template: &amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;Release About&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| project_name = OWASP Cloud ‐ 10 Project&lt;br /&gt;
| project_home_page = Category:OWASP Cloud ‐ 10 Project&lt;br /&gt;
&lt;br /&gt;
| release_name = Initial Pre-Alpha List of OWASP Cloud Top 10 Security Risks&lt;br /&gt;
&lt;br /&gt;
| release_date = Still under work&lt;br /&gt;
&lt;br /&gt;
| release_description = Aim of the &amp;quot;OWASP Cloud-10&amp;quot; list is to help balance security risks with the cost advantage that the Cloud and SaaS model provides. We expect the Cloud and SaaS providers to be indirect audience for &amp;quot;OWASP Cloud-10&amp;quot;, when they try to showcase their security controls to potential customers against this list. &lt;br /&gt;
&lt;br /&gt;
| release_license =  [http://creativecommons.org/licenses/by-sa/3.0/ '''Creative Commons Attribution Share Alike 3.0'''] &lt;br /&gt;
&lt;br /&gt;
| release_download_link =  https://www.owasp.org/index.php/OWASP_Cloud_%E2%80%90_10/Initial_Pre-Alpha_List_of_OWASP_Cloud_Top_10_Security_Risks &lt;br /&gt;
 &lt;br /&gt;
| leader_name1 = Vinay Bansal&lt;br /&gt;
| leader_email1 = vibansal@cisco.com&lt;br /&gt;
| leader_username1 = Vinaykbansal&lt;br /&gt;
&lt;br /&gt;
| contributor_name1 = Shankar Babu Chebrolu&lt;br /&gt;
| contributor_email1 = shbabu@cisco.com&lt;br /&gt;
| contributor_username1 = Shankar_Babu_Chebrolu &lt;br /&gt;
&lt;br /&gt;
| contributor_name4 = Ludovic Petit&lt;br /&gt;
| contributor_email4 = ludovic.petit@owasp.org &lt;br /&gt;
| contributor_username4 = Ludovic_Petit&lt;br /&gt;
&lt;br /&gt;
| contributor_name[1-10] = &lt;br /&gt;
| contributor_email[1-10] = &lt;br /&gt;
| contributor_username[1-10] = &lt;br /&gt;
&lt;br /&gt;
| release_notes = https://www.owasp.org/index.php/Projects/OWASP_Cloud_%E2%80%90_10_Project/Releases/Initial_Pre-Alpha_List_of_OWASP_Cloud_Top_10_Security_Risks/Notes&lt;br /&gt;
&lt;br /&gt;
| links_url1 = http://www.owasp.org/images/4/47/Cloud-Top10-Security-Risks.pdf&lt;br /&gt;
| links_name1 = Cloud-Top10-Security-Risks' PDF&lt;br /&gt;
&lt;br /&gt;
| links_url[2-10] = &lt;br /&gt;
| links_name[2-10] = &lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_User_Identity_Federation&amp;diff=136316</id>
		<title>Cloud-10 User Identity Federation</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_User_Identity_Federation&amp;diff=136316"/>
				<updated>2012-09-24T10:39:40Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==R2:User Identity Federation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Identity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Cloud ‐ 10 Project]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;headertabs/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Cloud_%E2%80%90_10_Project&amp;diff=136315</id>
		<title>Category:OWASP Cloud ‐ 10 Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Cloud_%E2%80%90_10_Project&amp;diff=136315"/>
				<updated>2012-09-24T09:37:22Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Main  ====&lt;br /&gt;
&lt;br /&gt;
== Cloud Top 10 Security Risks ==&lt;br /&gt;
&lt;br /&gt;
== Goal  ==&lt;br /&gt;
&lt;br /&gt;
According to Gartner, by 2012, 20% of businesses will adopt cloud services and own no IT assets. Goal of the project is to maintain a list of top 10 security risks faced with the Cloud* Computing and SaaS Models. List will be maintained by input from community, security experts and security incidences at cloud/SaaS providers.&lt;br /&gt;
&lt;br /&gt;
* Most of the risks are based on the assumption that Cloud is a public or a hybrid cloud&lt;br /&gt;
&lt;br /&gt;
== Audience  ==&lt;br /&gt;
&lt;br /&gt;
Audience for the project will be organizations planning on leveraging external cloud environment to host their applications or rent application in a SaaS model (Software as a Service). Aim of the &amp;quot;OWASP Cloud-10&amp;quot; list is to help balance security risks with the cost advantage that the Cloud and SaaS model provides. We expect the Cloud and SaaS providers to be indirect audience for &amp;quot;OWASP Cloud-10&amp;quot;, when they try to showcase their security controls to potential customers against this list.&lt;br /&gt;
&lt;br /&gt;
Also refer the recent presentation - http://www.owasp.org/images/4/47/Cloud-Top10-Security-Risks.pdf&lt;br /&gt;
&lt;br /&gt;
{{:OWASP Cloud ‐ 10/Initial Pre-Alpha List of OWASP Cloud Top 10 Security Risks}}&lt;br /&gt;
&lt;br /&gt;
==== Roadmap (Status)  ====&lt;br /&gt;
&lt;br /&gt;
== Managing OWASP Cloud-10 List (Pre-Alpha)  ==&lt;br /&gt;
&lt;br /&gt;
“OWASP Cloud-10” list will be maintained by input from, community, security experts and security incidences at cloud/SaaS providers. &lt;br /&gt;
&lt;br /&gt;
Each of the identified risk in &amp;quot;OWASP Cloud-10&amp;quot; will provide details on: &lt;br /&gt;
&lt;br /&gt;
*Various Risk Scenarios &lt;br /&gt;
*Real World Examples &lt;br /&gt;
*Possible Mitigations and Security Controls &lt;br /&gt;
*Reference to any related Incident&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Risk Criteria:&lt;br /&gt;
&lt;br /&gt;
#Easily Executable&lt;br /&gt;
#Most Damaging&lt;br /&gt;
#Incidence Frequency (Known)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alpha Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#'''Identify and publish a first draft of potential &amp;quot;OWASP Cloud-10&amp;quot; candidates (Dec 2009)''' &lt;br /&gt;
#Ask contributors to collect more data and details on each of the risk item. (till Jan 2010) &lt;br /&gt;
#Get initial community feedback by discussing it in various blogs, discussion forums etc. (Jan-Feb 2010)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta Release  ==&lt;br /&gt;
&lt;br /&gt;
# Writeup to be finished by April 5th (All)&lt;br /&gt;
# Provide feedback by April 19th&lt;br /&gt;
# Incorporate all the comments feedback by 26th April&lt;br /&gt;
# Publish the first (beta) list of &amp;quot;OWASP Cloud-10&amp;quot; (April 3rd 2010) &lt;br /&gt;
#Identify additional candidates &lt;br /&gt;
#……. (repeat steps as in Alpha)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Taxonomy  ====&lt;br /&gt;
&lt;br /&gt;
== Terms ==&lt;br /&gt;
&lt;br /&gt;
== Diagrams ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Reference  ====&lt;br /&gt;
&lt;br /&gt;
== Related Efforts  ==&lt;br /&gt;
&lt;br /&gt;
#Cloud Security Alliance - http://www.cloudsecurityalliance.org/ &lt;br /&gt;
#IDC Aug 2008 Survey (Security #1) Challenge for Cloud/On-Demand Models - http://blogs.idc.com/ie/?p=210&lt;br /&gt;
&lt;br /&gt;
== Related OWASP Projects  ==&lt;br /&gt;
&lt;br /&gt;
#OWASP Top Ten Project &lt;br /&gt;
#OWASP Legal Project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---==== Contributors  ====&lt;br /&gt;
&lt;br /&gt;
== Project Leaders  ==&lt;br /&gt;
&lt;br /&gt;
[[:User:vinaykbansal|'''Vinay Bansal''']]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contributors  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[User:Ludovic_Petit|Ludovic Petit]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Initial Contributors (2010-2011) ==&lt;br /&gt;
&lt;br /&gt;
Appreciate your contributions.&lt;br /&gt;
&amp;lt;br&amp;gt;[[User:Shankar Babu Chebrolu|Dr. Shankar Babu Chebrolu]]&lt;br /&gt;
&amp;lt;br&amp;gt;[[User:Pankaj Telang|Pankaj Telang]]&lt;br /&gt;
&amp;lt;br&amp;gt;[http://www.owasp.org/index.php/User:Ken_Huang Ken Huang]&lt;br /&gt;
&amp;lt;br&amp;gt;[[User:Ove Hansen|Ove Hansen]]&lt;br /&gt;
&amp;lt;br&amp;gt;[[User:Salvatore Di Blasi|Salvatore Di Blasi]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#[https://lists.owasp.org/mailman/listinfo/owasp-cloud-10 Subscribe or read the Cloud-10 mail archives]&lt;br /&gt;
&lt;br /&gt;
==== Project Details  ====&lt;br /&gt;
&lt;br /&gt;
{{:GPC Project Details/OWASP Cloud ‐ 10 Project | OWASP Project Identification Tab}}---&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Project Details ====&lt;br /&gt;
{{:Projects/OWASP Cloud ‐ 10 Project | Project About}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; __NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:Cloud_-_Top_5_Risks_with_PAAS|&amp;lt;br&amp;gt;]]&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=121185</id>
		<title>Cloud-10 Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=121185"/>
				<updated>2011-12-07T17:00:54Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Guideline Document */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Guideline Document ==&lt;br /&gt;
&lt;br /&gt;
1. Development / Environment Setting&lt;br /&gt;
&lt;br /&gt;
a) Developer Access&lt;br /&gt;
#Jump Server&lt;br /&gt;
##Multi factor Autch&lt;br /&gt;
##VPN/Cert based Authc&lt;br /&gt;
&lt;br /&gt;
2. Architecture&lt;br /&gt;
&lt;br /&gt;
#Tiering&lt;br /&gt;
#Communicaiton &lt;br /&gt;
##between zones&lt;br /&gt;
##within tiers&lt;br /&gt;
##ACLs&lt;br /&gt;
#AuthC/Identity&lt;br /&gt;
#Encryption&lt;br /&gt;
#Integration&lt;br /&gt;
## Web Services&lt;br /&gt;
##VPN based&lt;br /&gt;
#WAF&lt;br /&gt;
&lt;br /&gt;
3. Deployment and Testing&lt;br /&gt;
#Hardening&lt;br /&gt;
&lt;br /&gt;
4. Operations&lt;br /&gt;
#Patching&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
 &lt;br /&gt;
#Deploying Third Party &lt;br /&gt;
#Building Your Own Application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Target Providers ==&lt;br /&gt;
# Savvis - Shankar&lt;br /&gt;
# Amazon EC2 - Vinay&lt;br /&gt;
# Google Apps - Pankaj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Timelines ==&lt;br /&gt;
&lt;br /&gt;
1. Initial Draft from Shankar - Nov 29nd&lt;br /&gt;
&lt;br /&gt;
2. Initial Draft from Vinay - Dec 9th&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=119732</id>
		<title>Cloud-10 Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=119732"/>
				<updated>2011-11-01T14:24:13Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Timelines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Guideline Document ==&lt;br /&gt;
&lt;br /&gt;
1. Development / Environment Setting&lt;br /&gt;
&lt;br /&gt;
a) Developer Access&lt;br /&gt;
#Jump Server&lt;br /&gt;
##Multi factor Autch&lt;br /&gt;
##VPN/Cert based Authc&lt;br /&gt;
&lt;br /&gt;
2. Architecture&lt;br /&gt;
&lt;br /&gt;
#Tiering&lt;br /&gt;
#Communicaiton &lt;br /&gt;
##between zones&lt;br /&gt;
##within tiers&lt;br /&gt;
##ACLs&lt;br /&gt;
#AuthC/Identity&lt;br /&gt;
#Encryption&lt;br /&gt;
#WAF&lt;br /&gt;
&lt;br /&gt;
3. Deployment and Testing&lt;br /&gt;
#Hardening&lt;br /&gt;
&lt;br /&gt;
4. Operations&lt;br /&gt;
#Patching&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
 &lt;br /&gt;
#Deploying Third Party &lt;br /&gt;
#Building Your Own Application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Target Providers ==&lt;br /&gt;
# Savvis - Shankar&lt;br /&gt;
# Amazon EC2 - Vinay&lt;br /&gt;
# Google Apps - Pankaj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Timelines ==&lt;br /&gt;
&lt;br /&gt;
1. Initial Draft from Shankar - Nov 29nd&lt;br /&gt;
&lt;br /&gt;
2. Initial Draft from Vinay - Dec 9th&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=119731</id>
		<title>Cloud-10 Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=119731"/>
				<updated>2011-11-01T14:20:48Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Target Providers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Guideline Document ==&lt;br /&gt;
&lt;br /&gt;
1. Development / Environment Setting&lt;br /&gt;
&lt;br /&gt;
a) Developer Access&lt;br /&gt;
#Jump Server&lt;br /&gt;
##Multi factor Autch&lt;br /&gt;
##VPN/Cert based Authc&lt;br /&gt;
&lt;br /&gt;
2. Architecture&lt;br /&gt;
&lt;br /&gt;
#Tiering&lt;br /&gt;
#Communicaiton &lt;br /&gt;
##between zones&lt;br /&gt;
##within tiers&lt;br /&gt;
##ACLs&lt;br /&gt;
#AuthC/Identity&lt;br /&gt;
#Encryption&lt;br /&gt;
#WAF&lt;br /&gt;
&lt;br /&gt;
3. Deployment and Testing&lt;br /&gt;
#Hardening&lt;br /&gt;
&lt;br /&gt;
4. Operations&lt;br /&gt;
#Patching&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
 &lt;br /&gt;
#Deploying Third Party &lt;br /&gt;
#Building Your Own Application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Target Providers ==&lt;br /&gt;
# Savvis - Shankar&lt;br /&gt;
# Amazon EC2 - Vinay&lt;br /&gt;
# Google Apps - Pankaj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Timelines ==&lt;br /&gt;
&lt;br /&gt;
1. Initial Draft from Shankar - Nov 22nd&lt;br /&gt;
&lt;br /&gt;
2. Initial Draft from Vinay - Nov 30th&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=119729</id>
		<title>Cloud-10 Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=119729"/>
				<updated>2011-11-01T14:10:29Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Target Providers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Guideline Document ==&lt;br /&gt;
&lt;br /&gt;
1. Development / Environment Setting&lt;br /&gt;
&lt;br /&gt;
a) Developer Access&lt;br /&gt;
#Jump Server&lt;br /&gt;
##Multi factor Autch&lt;br /&gt;
##VPN/Cert based Authc&lt;br /&gt;
&lt;br /&gt;
2. Architecture&lt;br /&gt;
&lt;br /&gt;
#Tiering&lt;br /&gt;
#Communicaiton &lt;br /&gt;
##between zones&lt;br /&gt;
##within tiers&lt;br /&gt;
##ACLs&lt;br /&gt;
#AuthC/Identity&lt;br /&gt;
#Encryption&lt;br /&gt;
#WAF&lt;br /&gt;
&lt;br /&gt;
3. Deployment and Testing&lt;br /&gt;
#Hardening&lt;br /&gt;
&lt;br /&gt;
4. Operations&lt;br /&gt;
#Patching&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
 &lt;br /&gt;
#Deploying Third Party &lt;br /&gt;
#Building Your Own Application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Target Providers ==&lt;br /&gt;
# Savvis - Shankar&lt;br /&gt;
# Amazon EC2 - Vinay&lt;br /&gt;
# Google Apps - Pankaj&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=119728</id>
		<title>Cloud-10 Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=119728"/>
				<updated>2011-11-01T14:08:36Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== Guideline Document ==&lt;br /&gt;
&lt;br /&gt;
1. Development / Environment Setting&lt;br /&gt;
&lt;br /&gt;
a) Developer Access&lt;br /&gt;
#Jump Server&lt;br /&gt;
##Multi factor Autch&lt;br /&gt;
##VPN/Cert based Authc&lt;br /&gt;
&lt;br /&gt;
2. Architecture&lt;br /&gt;
&lt;br /&gt;
#Tiering&lt;br /&gt;
#Communicaiton &lt;br /&gt;
##between zones&lt;br /&gt;
##within tiers&lt;br /&gt;
##ACLs&lt;br /&gt;
#AuthC/Identity&lt;br /&gt;
#Encryption&lt;br /&gt;
#WAF&lt;br /&gt;
&lt;br /&gt;
3. Deployment and Testing&lt;br /&gt;
#Hardening&lt;br /&gt;
&lt;br /&gt;
4. Operations&lt;br /&gt;
#Patching&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
 &lt;br /&gt;
#Deploying Third Party &lt;br /&gt;
#Building Your Own Application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Target Providers ==&lt;br /&gt;
1. Savvis - &lt;br /&gt;
2. Amazon EC2&lt;br /&gt;
3. Google Apps&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=119727</id>
		<title>Cloud-10 Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=119727"/>
				<updated>2011-11-01T14:06:40Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1. Development / Environment Setting&lt;br /&gt;
&lt;br /&gt;
a) Developer Access&lt;br /&gt;
#Jump Server&lt;br /&gt;
##Multi factor Autch&lt;br /&gt;
##VPN/Cert based Authc&lt;br /&gt;
&lt;br /&gt;
2. Architecture&lt;br /&gt;
&lt;br /&gt;
#Tiering&lt;br /&gt;
#Communicaiton &lt;br /&gt;
##between zones&lt;br /&gt;
##within tiers&lt;br /&gt;
##ACLs&lt;br /&gt;
#AuthC/Identity&lt;br /&gt;
#Encryption&lt;br /&gt;
#WAF&lt;br /&gt;
&lt;br /&gt;
3. Deployment and Testing&lt;br /&gt;
#Hardening&lt;br /&gt;
&lt;br /&gt;
4. Operations&lt;br /&gt;
#Patching&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
 &lt;br /&gt;
#Deploying Third Party &lt;br /&gt;
#Building Your Own Application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Target Environment&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=119726</id>
		<title>Cloud-10 Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=119726"/>
				<updated>2011-11-01T14:02:35Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1. Development / Environment Setting&lt;br /&gt;
&lt;br /&gt;
a) Developer Access&lt;br /&gt;
#Jump Server&lt;br /&gt;
##Multi factor Autch&lt;br /&gt;
##VPN/Cert based Authc&lt;br /&gt;
&lt;br /&gt;
2. Architecture&lt;br /&gt;
&lt;br /&gt;
#Tiering&lt;br /&gt;
#Communicaiton &lt;br /&gt;
##between zones&lt;br /&gt;
##within tiers&lt;br /&gt;
##ACLs&lt;br /&gt;
#AuthC/Identity&lt;br /&gt;
#Encryption&lt;br /&gt;
#WAF&lt;br /&gt;
&lt;br /&gt;
3. Deployment and Testing&lt;br /&gt;
#Hardening&lt;br /&gt;
&lt;br /&gt;
4. Operations&lt;br /&gt;
#Patching&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=119725</id>
		<title>Cloud-10 Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Guidelines&amp;diff=119725"/>
				<updated>2011-11-01T14:00:36Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: Created page with &amp;quot;1. Development / Environment Setting  a) Developer Access   2. Architecture  #Tiering #Communicaiton between zones  3. Deployment and Testing   4. Operations&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1. Development / Environment Setting&lt;br /&gt;
&lt;br /&gt;
a) Developer Access&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Architecture&lt;br /&gt;
&lt;br /&gt;
#Tiering&lt;br /&gt;
#Communicaiton between zones&lt;br /&gt;
&lt;br /&gt;
3. Deployment and Testing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4. Operations&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=114478</id>
		<title>Projects/OWASP Mobile Security Project - Top Ten Mobile Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=114478"/>
				<updated>2011-07-23T13:26:58Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Top 10 mobile controls and design principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Top 10 mobile controls and design principles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Identify and protect sensitive data on the mobile device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Unsafe sensitive data storage, attacks on decommissioned phones unintentional disclosure: Mobile devices (being mobile) have a higher risk of loss or theft. Adequate protection should be built in to minimize the loss of sensitive data on device.&lt;br /&gt;
&lt;br /&gt;
*1.1 In the design phase classify data storage according to sensitivity and apply controls accordingly (e.g. passwords, personal data, location, error logs etc.). Process, store and use data according to its classification. Validate the security of methods applied to sensitive data.&lt;br /&gt;
*1.2 Store sensitive data on the server instead of client-end device. This is based on the assumption that secure network connectivity is always available and that protection mechanisms available to server side storage are superior. The relative security of client vs server-side security also needs to be assessed on a case-by-case basis (see ENISA cloud risk assessment or OWASP Cloud top 10 for decision support).&lt;br /&gt;
*1.3 If possible, use a file encryption API provided by the OS or other trusted source. Some platforms provide file encryption API’s which use a private key protected by the device unlock code and deleted on remote kill. If this is available, it should be used as it increases the security of the encryption without creating extra burden for the end-user. It also makes stored data safer in the case of loss or theft.&lt;br /&gt;
*1.4 Do not store/cache sensitive data (including keys) unless they are encrypted and if possible stored in a tamper-proof area (see 2).&lt;br /&gt;
*1.5 Consider restricting access to sensitive data based on contextual information such as location (e.g. wallet App not usable outside Europe, car key not usable unless within 100m of car etc...).&lt;br /&gt;
*1.6 Do not store historical GPS/tracking or other sensitive information on the device beyond the period required by the application (see 1.8).&lt;br /&gt;
*1.7 Assume that shared storage is untrusted - information may easily leak in unexpected ways through any shared storage. In particular:&lt;br /&gt;
**Be aware of caches and temporary storage as a possible leakage channel when shared with other apps.&lt;br /&gt;
**Be aware of public shared storage such as address book, media gallery, audio files, as a possible leakage channel. For example storing images with location metadata in the media-gallery allows that information to be shared in unintended ways.&lt;br /&gt;
**Do not store temp/cached data in a world readable directory.&lt;br /&gt;
*1.8 Applications on managed devices should leverage remote wipe and kill switch APIs (OS-level or purpose-built) to remove sensitive information from the device in the event of theft or loss.&lt;br /&gt;
*1.9 Data deletion should be scheduled according to a maximum retention period, (to prevent e.g. data remaining in caches indefinitely).&lt;br /&gt;
*1.10 Bear in mind that there is no known secure deletion procedure for flash memory (unless wiping the entire media). Therefore data encryption is especially important.&lt;br /&gt;
*1.11 Consider the security of the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
*1.12 Apply the principle of minimal disclosure - only collect and disclose data which is required for business use of the application. Identify in the design phase what data is needed, its sensitivity and whether it is appropriate to collect, store and use each data type.&lt;br /&gt;
*1.13 Use non-persistent identifiers which are not shared with other apps wherever possible - e.g. do not use the device ID number as an identifier unless there is a good reason to do so (e.g. use a randomly generated number). Apply the same principles to app sessions as to http sessions/cookies etc....&lt;br /&gt;
*1.14 Application developers may want to incorporate an application-specific &amp;quot;data kill switch&amp;quot; into their products, to allow the per-app deletion of their application's sensitive data when needed (strong authentication is required to protect misuse of such a feature).&lt;br /&gt;
&lt;br /&gt;
'''2. Handle password credentials securely on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Spyware, Surveillance, Financial malware, UI impersonation User's password credentials if stolen not only provides unauthorized access to the mobile backend service but potentially many other services/accounts used by the user. Since a majority of the users reuse their passwords.&lt;br /&gt;
&lt;br /&gt;
*2.1 Instead of passwords consider using longer term authorization tokens that can be securely stored on the device. Encrypt the tokens while stored on the device and in transit. Tokens can be issued by the backend service after verifying the user credentials initially. The tokens could be time bounded  to the specific service as well as revokable (if possible server side), thereby minimizing the damage in loss scenarios. Use the latest versions of the authorization standards (such as OAuth 2.0). Make sure that these tokens expire after an appropriate (not too long) delay.&lt;br /&gt;
*2.2 In case passwords need to be stored on the device, leverage the encryption and key-store mechanisms provided by the mobile OS to securely store passwords, password equivalents and authorization tokens. Never store passwords in clear text. Do not store passwords or long term session IDs without appropriate encryption or hashing.&lt;br /&gt;
*2.3 Some devices allow developers to use a Secure Element (e.g. http://www.blackberry.com/developers/docs/7.0.0api/net/rim/device/api/io/nfc/se/SecureElement.html ,  http://code.google.com/p/seek-for-android/  //Check whether NFC only) - the number of devices offering this functionality is likely to increase. Developers should use such capability to store keys, credentials and other sensitive data.&lt;br /&gt;
*2.4 Provide the ability for the mobile user to change/remove passwords on the device. &lt;br /&gt;
*2.5 Password credentials should not be copied to backups.&lt;br /&gt;
*2.6 Consider using visual/pattern based passwords to aid usability.&lt;br /&gt;
*2.7 Check the entropy of all passwords.&lt;br /&gt;
*2.8 Ensure passwords and keys are not visible in cache or logs.&lt;br /&gt;
*2.9 SMS is not a secure channel and cannot be relied upon to send sensitive information.&lt;br /&gt;
*2.10 Do not store any passwords or secrets in the application binary. Do not use a generic shared secret for integration to backend (like embedded password in code). Mobile application binaries can be easily downloaded and reverse engineered.&lt;br /&gt;
&lt;br /&gt;
'''3. Ensure sensitive data is protected in transit'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Network spoofing attacks, Surveillance. The majority of the smartphones are capable of using multiple transport carriers including Wifi, provider network (3G, GSM, CDMA and others), bluetooth. Sensitive data passing through insecure channels could be intercepted.&lt;br /&gt;
&lt;br /&gt;
*3.1 Assume that the network layer is not private. Modern network layer attacks can decrypt provider network encryption, and there is no guarantee that the wifi network will be appropriately encrypted.&lt;br /&gt;
*3.2 Applications should enforce the use of an end-to-end secure channel (such as SSL/TLS) when sending sensitive information on wire/air. This includes passing user credentials, or other authentication equivalents. In some cases this may mean encrypting all communication.&lt;br /&gt;
*3.3 Enforce strong encryption algorithms and key lengths. Do not allow unsigned certificates and allow only reputable certificate authorities. Do not disable or ignore the SSL chain validation. &lt;br /&gt;
*3.4 For sensitive data, to reduce the risk of man-in-middle attacks (like SSL proxy, SSL strip), a secure connection should only be established after verifying the identity of the remote end-point (server). This can be achieved by ensuring that SSL is only established with the end points having the trusted certificates in the key chain.&lt;br /&gt;
*3.5 The user interface should make it as easy as possible for the user to find out if a certificate is valid.&lt;br /&gt;
*3.6 SMS, MMS or notifications should not be used to send sensitive data to or from mobile end points.&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' Google vulnerability of Client Login account credentials on unprotected wifi - [http://www.google.com/url?q=http%3A%2F%2Fwww.uni-ulm.de%2Fin%2Fmi%2Fmitarbeiter%2Fkoenings%2Fcatching-authtokens.html&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFQjCNGO-Yp1KHqO8USuL0zxL1Lpwq1Usw]&lt;br /&gt;
&lt;br /&gt;
'''4. Implement user authentication/authorization and session management correctly'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Unauthorized individuals may obtain access to sensitive data or systems. This can be done by circumventing authentication systems (logins) or by reusing valid tokens or cookies.&lt;br /&gt;
&lt;br /&gt;
*4.1 Require appropriate strength user authentication to the application. It may be useful to provide feedback on the strength of the password when it is being entered for the first time. The strength of the authentication mechanism used depends on the data being processed by the application and its access to valuable resources (e.g. costing money).&lt;br /&gt;
*4.2 It is important to ensure that the session management is done correctly after the initial authentication. Require authentication credentials or tokens to be passed with any subsequent request (especially those granting privileged access or modification). &lt;br /&gt;
*4.3 Use unpredictable session identifiers with high entropy.&lt;br /&gt;
*4.4 Use context to add security to authentication - e.g. device ID, IP location, etc...&lt;br /&gt;
*4.5 Consider using additional authentication factors for applications giving access to sensitive data or interfaces where possible - e.g. voice, fingerprint (if available), who-you-know, behavioural etc...&lt;br /&gt;
*4.6 Use authentication that ties back to the end user identity (rather than the device identity).&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' Google's ClientLogin implementation &lt;br /&gt;
[http://www.google.com/url?q=http%3A%2F%2Fwww.uni-ulm.de%2Fin%2Fmi%2Fmitarbeiter%2Fkoenings%2Fcatching-authtokens.html&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFQjCNGO-Yp1KHqO8USuL0zxL1Lpwq1Usw]&lt;br /&gt;
&lt;br /&gt;
'''5. Keep the backend APIs (services) and the platform (server) secure''' &lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Attacks on backend systems, loss of data via cloud storage. Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. Insecure implementation of backend APIs or services, and not keeping the back-end platform hardened/patched will allow bad guys to directly attack/compromise the back-ends.&lt;br /&gt;
&lt;br /&gt;
*5.1 Carry out a specific check of all data transferred betwen the mobile device and web-server backends and other external interfaces - (e.g. is location or other information transferred within file metadata)&lt;br /&gt;
*5.2 All back-end services (WebServices/REST) for mobile apps should be tested for vulnerabilities periodically e.g. using static code analyzer tools and fuzzing tools for testing and finding security flaws.&lt;br /&gt;
*5.3 Ensure that the back-end platform (server) is running with a hardened configuration with the latest security patches applied to the OS, Web Server and other application components.&lt;br /&gt;
*5.4 Ensure adequate logs are retained on the back-end in order to detect and respond to incidents and perform forensics (within the limits of data protection law).&lt;br /&gt;
*5.6 Employ rate limiting and throttling on a per-user/IP basis (if user identification is available) to reduce the risk from DDoS attack.&lt;br /&gt;
*5.7 Test for DoS vulnerabilities where the server may become overwhelmed by certain resource intensive application calls.&lt;br /&gt;
*5.8 Web Services, REST and APIs can have similar vulnerabilities to Web Applications. Perform testing of the backend Web Service, REST or API to determine vulnerabilities may exist. Perform abuse case testing, in addition to use case testing.&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' [https://www.owasp.org/index.php/Web_Services]&lt;br /&gt;
[http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''6. Perform data integration with third party services/applications securely'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Data Leakage&lt;br /&gt;
&lt;br /&gt;
*6.1 Vet the security/authenticity of any third party code/libraries used in your mobile application (reliable source, supported, no backend Trojans, licensing)&lt;br /&gt;
*6.2 Track all third party frameworks/APIs used in the mobile application for security patches. A corresponding security update must be done for the mobile applications using these third party APIs/frameworks.&lt;br /&gt;
*6.3 Pay particular attention to validating all data received from and sent to  non-trusted third party apps (e.g. ad network software) before processing in the application. &lt;br /&gt;
&lt;br /&gt;
'''7. Pay specific attention to the collection and storage of consent for the collection and use of the user’s data'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Unintentional disclosure of personal or private information. In the European Union, it is mandatory to obtain user consent for the collection of personally identifiable information (PII).&lt;br /&gt;
&lt;br /&gt;
*7.1 Create a privacy policy covering the usage of personal data and make it available to the user especially when making consent choices.&lt;br /&gt;
*7.2 Consent may be collected in 3 main ways:&lt;br /&gt;
**At install time&lt;br /&gt;
**At run-time when data is sent&lt;br /&gt;
**Via “opt-out” mechanisms where a default setting is implemented and the user has to turn it off.&lt;br /&gt;
*7.3 Check whether your application is collecting PII - it may not always be obvious - for example do you use persistent identifiers linked to central data stores containing personal information?&lt;br /&gt;
*7.4 Audit communication mechanisms to check for unintended leaks (e.g. image metadata).&lt;br /&gt;
*7.5 Keep a record of consent to the transfer of PII available to the user (consider also the value of keeping server-side records attached to any user data stored).&lt;br /&gt;
*7.6 Check whether your consent collection-mechanism overlaps or conflicts with any other consent-collection within the same stack (e.g. APP-native + webkit HTML)&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' EU Law [http://democrats.energycommerce.house.gov/sites/default/files/image_uploads/Testimony_05.04.11_Spafford.pdf]&lt;br /&gt;
&lt;br /&gt;
'''8. Implement controls to prevent unauthorised access to paid-for resources (wallet, SMS, phone calls etc...)'''&lt;br /&gt;
'''Risks:''' Smartphone apps give programmatic access to premium rate phone calls, SMS, roaming data, NFC payments etc. Apps with privileged access to such API’s should take particular care to prevent abuse given the financial impact of vulnerabilities giving attackers access to the user’s financial resources.&lt;br /&gt;
&lt;br /&gt;
*8.1 Maintain logs of access to paid resources in a non-repudiable format and make them available to the end-user for monitoring (e.g. signed receipt sent to server back-end). Logs should be protected from unauthorised access.&lt;br /&gt;
*8.2 Check for anomalous usage patterns in paid resource usage and require reauthentication. E.g. when significant change in location occurs, user-language changes etc.&lt;br /&gt;
*8.3 Consider using a white-list model by default for paid resource addressing - e.g. address book only unless specifically authorised for phone calls.&lt;br /&gt;
*8.4 Authenticate all API calls to paid resources (e.g. using an app developer certificate).&lt;br /&gt;
*8.5 Ensure that wallet API callbacks do not pass cleartext account/pricing/ billing/item information.&lt;br /&gt;
*8.6 Warn user and obtain consent for any cost implications for app behaviour.&lt;br /&gt;
*8.7 Implement best practices such as fast dormancy (3GPP), caching etc... to minimise signalling load on base stations.&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' Google Wallet Security [http://www.google.com/wallet/how-it-works-security.html]&lt;br /&gt;
&lt;br /&gt;
'''9. Ensure Secure distribution/provisioning of mobile applications'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' &lt;br /&gt;
*9.1 Applications must be designed and provisioned to allow updates for security patches, taking into account the requirements for approval by app-stores and the extra delay this may imply.&lt;br /&gt;
*9.2 Provide remote kill functionality &lt;br /&gt;
*9.3 Feedback channels&lt;br /&gt;
*9.4 Code signing for some mobile platforms implies inherent trust between applications (with same code signatures), installed on the same mobile device. Plan code signing mechanisms properly. //Needs elaboration.&lt;br /&gt;
&lt;br /&gt;
'''10. Carefully check any runtime interpretation of code for errors '''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Runtime interpretation of code covers any opportunity an app gives for untrusted parties to provide unverified text or binary which is interpreted as code. For example, extra levels in a game, scripts, interpreted SMS headers. This gives an opportunity for malware to circumvent walled garden controls. Injection attacks leading to Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
&lt;br /&gt;
*10.1 Minimise runtime interpretation and capabilities offered to runtime interpreters.&lt;br /&gt;
*10.2 Run interpreters at minimal privilege levels.&lt;br /&gt;
*10.3 Fuzz test interpreters.&lt;br /&gt;
*10.4 Note that it is not always obvious that your code is interpreting text. Look for any capabilities accessible via user-input data and use of third party API’s - e.g. javascript interpreters.&lt;br /&gt;
*10.5 Define a comprehensive escape syntax as appropriate.&lt;br /&gt;
//Giles look for an example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Candidates (for consideration) ===&lt;br /&gt;
&lt;br /&gt;
'''A: Some general coding best practices are particularly relevant to mobile coding too'''&lt;br /&gt;
*Input Validation and Output Encoding&lt;br /&gt;
*Minimise lines of code.&lt;br /&gt;
*Use safe languages (e.g. from buffer-overflow).&lt;br /&gt;
*Implement a security report handling point (address) security@example.com &lt;br /&gt;
*Use static and binary code analyzers to find security flaws.&lt;br /&gt;
*Use safe string functions, avoid buffer and Integer overflow.&lt;br /&gt;
*Run with the minimum privilege required for the application on the operating system. Be aware of privileges granted by default by API's and disable them.&lt;br /&gt;
*Don't authorize code/app to execute with root/sa privilege&lt;br /&gt;
*Always perform testing as a standard as well as a privileged user&lt;br /&gt;
*Avoid opening application specific server sockets (listener ports) on the client device. Use the communication mechanisms provided by the OS.&lt;br /&gt;
*Context aware security: may be able to decrease/increase access based on the context (e.g. location, network) - &lt;br /&gt;
*Remove all test code before releasing the application&lt;br /&gt;
*Ensure logging is done appropriately but do not record excessive logs, especially including sensitive user information.&lt;br /&gt;
*//What sort of information should be recorded in the logs. (Keep audit data on the server, no user specific data - link to the Apple Issue - Signed Timestamps) &lt;br /&gt;
&lt;br /&gt;
'''B. Enforce higher security posture on the device for sensitive apps used in an enterprise context:''' // Vinay to check&lt;br /&gt;
*If a sensitive application needs to be provisioned on a device, application can employ enforcement of the certain security posture on the device (such as PIN, remote management/wipe) // Vinay - Still needs to be clarified&lt;br /&gt;
*Enterprise applications can employ this principle of doing a security posture check before deployment of sensitive applications&lt;br /&gt;
*Banking Apps&lt;br /&gt;
*//(Remote Management, PIN enforcement, encryption, application monitoring)&lt;br /&gt;
**Device cert can be used for stronger device identity. // How to make sure that this does not provide linkability between transactions (i.e. using the same cert across different service providers leaks data). I guess zero-knowledge certificates are too far-out for this guidance? Is this a common feature - device-cert - I have not come across it.&lt;br /&gt;
&lt;br /&gt;
'''C. Protect your application from other malicious applications on the device'''&lt;br /&gt;
&lt;br /&gt;
Risk: User's are prone to install applications that look cool (may be malicious) and can transmit data about user (or stored data) for malicious purpose.&lt;br /&gt;
&lt;br /&gt;
*(?? What guidelines could be provided to developers)&lt;br /&gt;
U*ser education on using due diligence while installing third party applications on mobile devices&lt;br /&gt;
&lt;br /&gt;
'''D. Provide or use an existing reporting channel for phishing from apps '''&lt;br /&gt;
&lt;br /&gt;
(e.g. if you are a browser plugin developer). //APWG? Can we recommend one?&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=114477</id>
		<title>Projects/OWASP Mobile Security Project - Top Ten Mobile Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=114477"/>
				<updated>2011-07-23T13:26:03Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Candidates (for consideration) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Top 10 mobile controls and design principles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Identify and protect sensitive data on the mobile device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Unsafe sensitive data storage, attacks on decommissioned phones unintentional disclosure: Mobile devices (being mobile) have a higher risk of loss or theft. Adequate protection should be built in to minimize the loss of sensitive data on device.&lt;br /&gt;
&lt;br /&gt;
*1.1 In the design phase classify data storage according to sensitivity and apply controls accordingly (e.g. passwords, personal data, location, error logs etc.). Process, store and use data according to its classification. Validate the security of methods applied to sensitive data.&lt;br /&gt;
*1.2 Store sensitive data on the server instead of client-end device. This is based on the assumption that secure network connectivity is always available and that protection mechanisms available to server side storage are superior. The relative security of client vs server-side security also needs to be assessed on a case-by-case basis (see ENISA cloud risk assessment or OWASP Cloud top 10 for decision support).&lt;br /&gt;
*1.3 If possible, use a file encryption API provided by the OS or other trusted source. Some platforms provide file encryption API’s which use a private key protected by the device unlock code and deleted on remote kill. If this is available, it should be used as it increases the security of the encryption without creating extra burden for the end-user. It also makes stored data safer in the case of loss or theft.&lt;br /&gt;
*1.4 Do not store/cache sensitive data (including keys) unless they are encrypted and if possible stored in a tamper-proof area (see 2).&lt;br /&gt;
*1.5 Consider restricting access to sensitive data based on contextual information such as location (e.g. wallet App not usable outside Europe, car key not usable unless within 100m of car etc...).&lt;br /&gt;
*1.6 Do not store historical GPS/tracking or other sensitive information on the device beyond the period required by the application (see 1.8).&lt;br /&gt;
*1.7 Assume that shared storage is untrusted - information may easily leak in unexpected ways through any shared storage. In particular:&lt;br /&gt;
**Be aware of caches and temporary storage as a possible leakage channel when shared with other apps.&lt;br /&gt;
**Be aware of public shared storage such as address book, media gallery, audio files, as a possible leakage channel. For example storing images with location metadata in the media-gallery allows that information to be shared in unintended ways.&lt;br /&gt;
**Do not store temp/cached data in a world readable directory.&lt;br /&gt;
*1.8 Applications on managed devices should leverage remote wipe and kill switch APIs (OS-level or purpose-built) to remove sensitive information from the device in the event of theft or loss.&lt;br /&gt;
*1.9 Data deletion should be scheduled according to a maximum retention period, (to prevent e.g. data remaining in caches indefinitely).&lt;br /&gt;
*1.10 Bear in mind that there is no known secure deletion procedure for flash memory (unless wiping the entire media). Therefore data encryption is especially important.&lt;br /&gt;
*1.11 Consider the security of the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
*1.12 Apply the principle of minimal disclosure - only collect and disclose data which is required for business use of the application. Identify in the design phase what data is needed, its sensitivity and whether it is appropriate to collect, store and use each data type.&lt;br /&gt;
*1.13 Use non-persistent identifiers which are not shared with other apps wherever possible - e.g. do not use the device ID number as an identifier unless there is a good reason to do so (e.g. use a randomly generated number). Apply the same principles to app sessions as to http sessions/cookies etc....&lt;br /&gt;
*1.14 Application developers may want to incorporate an application-specific &amp;quot;data kill switch&amp;quot; into their products, to allow the per-app deletion of their application's sensitive data when needed (strong authentication is required to protect misuse of such a feature).&lt;br /&gt;
&lt;br /&gt;
'''2. Handle password credentials securely on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Spyware, Surveillance, Financial malware, UI impersonation User's password credentials if stolen not only provides unauthorized access to the mobile backend service but potentially many other services/accounts used by the user. Since a majority of the users reuse their passwords.&lt;br /&gt;
&lt;br /&gt;
*2.1 Instead of passwords consider using longer term authorization tokens that can be securely stored on the device. Encrypt the tokens while stored on the device and in transit. Tokens can be issued by the backend service after verifying the user credentials initially. The tokens could be time bounded  to the specific service as well as revokable (if possible server side), thereby minimizing the damage in loss scenarios. Use the latest versions of the authorization standards (such as OAuth 2.0). Make sure that these tokens expire after an appropriate (not too long) delay.&lt;br /&gt;
*2.2 In case passwords need to be stored on the device, leverage the encryption and key-store mechanisms provided by the mobile OS to securely store passwords, password equivalents and authorization tokens. Never store passwords in clear text. Do not store passwords or long term session IDs without appropriate encryption or hashing.&lt;br /&gt;
*2.3 Some devices allow developers to use a Secure Element (e.g. http://www.blackberry.com/developers/docs/7.0.0api/net/rim/device/api/io/nfc/se/SecureElement.html ,  http://code.google.com/p/seek-for-android/  //Check whether NFC only) - the number of devices offering this functionality is likely to increase. Developers should use such capability to store keys, credentials and other sensitive data.&lt;br /&gt;
*2.4 Provide the ability for the mobile user to change/remove passwords on the device. &lt;br /&gt;
*2.5 Password credentials should not be copied to backups.&lt;br /&gt;
*2.6 Consider using visual/pattern based passwords to aid usability.&lt;br /&gt;
*2.7 Check the entropy of all passwords.&lt;br /&gt;
*2.8 Ensure passwords and keys are not visible in cache or logs.&lt;br /&gt;
*2.9 SMS is not a secure channel and cannot be relied upon to send sensitive information.&lt;br /&gt;
*2.10 Do not store any passwords or secrets in the application binary. Do not use a generic shared secret for integration to backend (like embedded password in code). Mobile application binaries can be easily downloaded and reverse engineered.&lt;br /&gt;
&lt;br /&gt;
'''3. Ensure sensitive data is protected in transit'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Network spoofing attacks, Surveillance. The majority of the smartphones are capable of using multiple transport carriers including Wifi, provider network (3G, GSM, CDMA and others), bluetooth. Sensitive data passing through insecure channels could be intercepted.&lt;br /&gt;
&lt;br /&gt;
*3.1 Assume that the network layer is not private. Modern network layer attacks can decrypt provider network encryption, and there is no guarantee that the wifi network will be appropriately encrypted.&lt;br /&gt;
*3.2 Applications should enforce the use of an end-to-end secure channel (such as SSL/TLS) when sending sensitive information on wire/air. This includes passing user credentials, or other authentication equivalents. In some cases this may mean encrypting all communication.&lt;br /&gt;
*3.3 Enforce strong encryption algorithms and key lengths. Do not allow unsigned certificates and allow only reputable certificate authorities. Do not disable or ignore the SSL chain validation. &lt;br /&gt;
*3.4 For sensitive data, to reduce the risk of man-in-middle attacks (like SSL proxy, SSL strip), a secure connection should only be established after verifying the identity of the remote end-point (server). This can be achieved by ensuring that SSL is only established with the end points having the trusted certificates in the key chain.&lt;br /&gt;
*3.5 The user interface should make it as easy as possible for the user to find out if a certificate is valid.&lt;br /&gt;
*3.6 SMS, MMS or notifications should not be used to send sensitive data to or from mobile end points.&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' Google vulnerability of Client Login account credentials on unprotected wifi - [http://www.google.com/url?q=http%3A%2F%2Fwww.uni-ulm.de%2Fin%2Fmi%2Fmitarbeiter%2Fkoenings%2Fcatching-authtokens.html&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFQjCNGO-Yp1KHqO8USuL0zxL1Lpwq1Usw]&lt;br /&gt;
&lt;br /&gt;
'''4. Implement user authentication/authorization and session management correctly'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Unauthorized individuals may obtain access to sensitive data or systems. This can be done by circumventing authentication systems (logins) or by reusing valid tokens or cookies.&lt;br /&gt;
&lt;br /&gt;
*4.1 Require appropriate strength user authentication to the application. It may be useful to provide feedback on the strength of the password when it is being entered for the first time. The strength of the authentication mechanism used depends on the data being processed by the application and its access to valuable resources (e.g. costing money).&lt;br /&gt;
*4.2 It is important to ensure that the session management is done correctly after the initial authentication. Require authentication credentials or tokens to be passed with any subsequent request (especially those granting privileged access or modification). &lt;br /&gt;
*4.3 Use unpredictable session identifiers with high entropy.&lt;br /&gt;
*4.4 Use context to add security to authentication - e.g. device ID, IP location, etc...&lt;br /&gt;
*4.5 Consider using additional authentication factors for applications giving access to sensitive data or interfaces where possible - e.g. voice, fingerprint (if available), who-you-know, behavioural etc...&lt;br /&gt;
*4.6 Use authentication that ties back to the end user identity (rather than the device identity).&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' Google's ClientLogin implementation &lt;br /&gt;
[http://www.google.com/url?q=http%3A%2F%2Fwww.uni-ulm.de%2Fin%2Fmi%2Fmitarbeiter%2Fkoenings%2Fcatching-authtokens.html&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFQjCNGO-Yp1KHqO8USuL0zxL1Lpwq1Usw]&lt;br /&gt;
&lt;br /&gt;
'''5. Keep the backend APIs (services) and the platform (server) secure''' &lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Attacks on backend systems, loss of data via cloud storage. Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. Insecure implementation of backend APIs or services, and not keeping the back-end platform hardened/patched will allow bad guys to directly attack/compromise the back-ends.&lt;br /&gt;
&lt;br /&gt;
*5.1 Carry out a specific check of all data transferred betwen the mobile device and web-server backends and other external interfaces - (e.g. is location or other information transferred within file metadata)&lt;br /&gt;
*5.2 All back-end services (WebServices/REST) for mobile apps should be tested for vulnerabilities periodically e.g. using static code analyzer tools and fuzzing tools for testing and finding security flaws.&lt;br /&gt;
*5.3 Ensure that the back-end platform (server) is running with a hardened configuration with the latest security patches applied to the OS, Web Server and other application components.&lt;br /&gt;
*5.4 Ensure adequate logs are retained on the back-end in order to detect and respond to incidents and perform forensics (within the limits of data protection law).&lt;br /&gt;
*5.6 Employ rate limiting and throttling on a per-user/IP basis (if user identification is available) to reduce the risk from DDoS attack.&lt;br /&gt;
*5.7 Test for DoS vulnerabilities where the server may become overwhelmed by certain resource intensive application calls.&lt;br /&gt;
*5.8 Web Services, REST and APIs can have similar vulnerabilities to Web Applications. Perform testing of the backend Web Service, REST or API to determine vulnerabilities may exist. Perform abuse case testing, in addition to use case testing.&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' [https://www.owasp.org/index.php/Web_Services]&lt;br /&gt;
[http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''6. Perform data integration with third party services/applications securely'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Data Leakage&lt;br /&gt;
&lt;br /&gt;
*6.1 Vet the security/authenticity of any third party code/libraries used in your mobile application (reliable source, supported, no backend Trojans, licensing)&lt;br /&gt;
*6.2 Track all third party frameworks/APIs used in the mobile application for security patches. A corresponding security update must be done for the mobile applications using these third party APIs/frameworks.&lt;br /&gt;
*6.3 Pay particular attention to validating all data received from and sent to  non-trusted third party apps (e.g. ad network software) before processing in the application. //Vinay: Give some specific examples (phishing, injection etc...)&lt;br /&gt;
&lt;br /&gt;
'''7. Pay specific attention to the collection and storage of consent for the collection and use of the user’s data'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Unintentional disclosure of personal or private information. In the European Union, it is mandatory to obtain user consent for the collection of personally identifiable information (PII).&lt;br /&gt;
&lt;br /&gt;
*7.1 Create a privacy policy covering the usage of personal data and make it available to the user especially when making consent choices.&lt;br /&gt;
*7.2 Consent may be collected in 3 main ways:&lt;br /&gt;
**At install time&lt;br /&gt;
**At run-time when data is sent&lt;br /&gt;
**Via “opt-out” mechanisms where a default setting is implemented and the user has to turn it off.&lt;br /&gt;
*7.3 Check whether your application is collecting PII - it may not always be obvious - for example do you use persistent identifiers linked to central data stores containing personal information?&lt;br /&gt;
*7.4 Audit communication mechanisms to check for unintended leaks (e.g. image metadata).&lt;br /&gt;
*7.5 Keep a record of consent to the transfer of PII available to the user (consider also the value of keeping server-side records attached to any user data stored).&lt;br /&gt;
*7.6 Check whether your consent collection-mechanism overlaps or conflicts with any other consent-collection within the same stack (e.g. APP-native + webkit HTML)&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' EU Law [http://democrats.energycommerce.house.gov/sites/default/files/image_uploads/Testimony_05.04.11_Spafford.pdf]&lt;br /&gt;
&lt;br /&gt;
'''8. Implement controls to prevent unauthorised access to paid-for resources (wallet, SMS, phone calls etc...)'''&lt;br /&gt;
'''Risks:''' Smartphone apps give programmatic access to premium rate phone calls, SMS, roaming data, NFC payments etc. Apps with privileged access to such API’s should take particular care to prevent abuse given the financial impact of vulnerabilities giving attackers access to the user’s financial resources.&lt;br /&gt;
&lt;br /&gt;
*8.1 Maintain logs of access to paid resources in a non-repudiable format and make them available to the end-user for monitoring (e.g. signed receipt sent to server back-end). Logs should be protected from unauthorised access.&lt;br /&gt;
*8.2 Check for anomalous usage patterns in paid resource usage and require reauthentication. E.g. when significant change in location occurs, user-language changes etc.&lt;br /&gt;
*8.3 Consider using a white-list model by default for paid resource addressing - e.g. address book only unless specifically authorised for phone calls.&lt;br /&gt;
*8.4 Authenticate all API calls to paid resources (e.g. using an app developer certificate).&lt;br /&gt;
*8.5 Ensure that wallet API callbacks do not pass cleartext account/pricing/ billing/item information.&lt;br /&gt;
*8.6 Warn user and obtain consent for any cost implications for app behaviour.&lt;br /&gt;
*8.7 Implement best practices such as fast dormancy (3GPP), caching etc... to minimise signalling load on base stations.&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' Google Wallet Security [http://www.google.com/wallet/how-it-works-security.html]&lt;br /&gt;
&lt;br /&gt;
'''9. Ensure Secure distribution/provisioning of mobile applications'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' &lt;br /&gt;
//Vinay - check and number. Interaction with the app-store.&lt;br /&gt;
*9.1 Applications must be designed and provisioned to allow updates for security patches, taking into account the requirements for approval by app-stores and the extra delay this may imply.&lt;br /&gt;
*9.2 Provide remote kill functionality &lt;br /&gt;
*9.3 Feedback channels&lt;br /&gt;
*9.4 Code signing for some mobile platforms implies inherent trust between applications (with same code signatures), installed on the same mobile device. Plan code signing mechanisms properly. //Needs elaboration. (Vinay will expand it).&lt;br /&gt;
&lt;br /&gt;
'''10. Carefully check any runtime interpretation of code for errors '''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Runtime interpretation of code covers any opportunity an app gives for untrusted parties to provide unverified text or binary which is interpreted as code. For example, extra levels in a game, scripts, interpreted SMS headers. This gives an opportunity for malware to circumvent walled garden controls. Injection attacks leading to Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
&lt;br /&gt;
*10.1 Minimise runtime interpretation and capabilities offered to runtime interpreters.&lt;br /&gt;
*10.2 Run interpreters at minimal privilege levels.&lt;br /&gt;
*10.3 Fuzz test interpreters.&lt;br /&gt;
*10.4 Note that it is not always obvious that your code is interpreting text. Look for any capabilities accessible via user-input data and use of third party API’s - e.g. javascript interpreters.&lt;br /&gt;
*10.5 Define a comprehensive escape syntax as appropriate.&lt;br /&gt;
//Giles look for an example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Candidates (for consideration) ===&lt;br /&gt;
&lt;br /&gt;
'''A: Some general coding best practices are particularly relevant to mobile coding too'''&lt;br /&gt;
*Input Validation and Output Encoding&lt;br /&gt;
*Minimise lines of code.&lt;br /&gt;
*Use safe languages (e.g. from buffer-overflow).&lt;br /&gt;
*Implement a security report handling point (address) security@example.com &lt;br /&gt;
*Use static and binary code analyzers to find security flaws.&lt;br /&gt;
*Use safe string functions, avoid buffer and Integer overflow.&lt;br /&gt;
*Run with the minimum privilege required for the application on the operating system. Be aware of privileges granted by default by API's and disable them.&lt;br /&gt;
*Don't authorize code/app to execute with root/sa privilege&lt;br /&gt;
*Always perform testing as a standard as well as a privileged user&lt;br /&gt;
*Avoid opening application specific server sockets (listener ports) on the client device. Use the communication mechanisms provided by the OS.&lt;br /&gt;
*Context aware security: may be able to decrease/increase access based on the context (e.g. location, network) - //Vinay - Enterprise Apps (type of wifi, vpn, trusted)&lt;br /&gt;
*Remove all test code before releasing the application&lt;br /&gt;
*Ensure logging is done appropriately but do not record excessive logs, especially including sensitive user information.&lt;br /&gt;
*//What sort of information should be recorded in the logs. (Keep audit data on the server, no user specific data - link to the Apple Issue - Signed Timestamps) //Vinay to add&lt;br /&gt;
&lt;br /&gt;
'''B. Enforce higher security posture on the device for sensitive apps used in an enterprise context:''' // Vinay to check&lt;br /&gt;
*If a sensitive application needs to be provisioned on a device, application can employ enforcement of the certain security posture on the device (such as PIN, remote management/wipe) // Vinay - Still needs to be clarified&lt;br /&gt;
*Enterprise applications can employ this principle of doing a security posture check before deployment of sensitive applications&lt;br /&gt;
*Banking Apps&lt;br /&gt;
*//(Remote Management, PIN enforcement, encryption, application monitoring)&lt;br /&gt;
**Device cert can be used for stronger device identity. // How to make sure that this does not provide linkability between transactions (i.e. using the same cert across different service providers leaks data). I guess zero-knowledge certificates are too far-out for this guidance? Is this a common feature - device-cert - I have not come across it.&lt;br /&gt;
&lt;br /&gt;
'''C. Protect your application from other malicious applications on the device'''&lt;br /&gt;
&lt;br /&gt;
Risk: User's are prone to install applications that look cool (may be malicious) and can transmit data about user (or stored data) for malicious purpose.&lt;br /&gt;
&lt;br /&gt;
*(?? What guidelines could be provided to developers)&lt;br /&gt;
U*ser education on using due diligence while installing third party applications on mobile devices&lt;br /&gt;
&lt;br /&gt;
'''D. Provide or use an existing reporting channel for phishing from apps '''&lt;br /&gt;
&lt;br /&gt;
(e.g. if you are a browser plugin developer). //APWG? Can we recommend one?&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=114476</id>
		<title>Projects/OWASP Mobile Security Project - Top Ten Mobile Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=114476"/>
				<updated>2011-07-23T13:25:36Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Top 10 mobile controls and design principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Top 10 mobile controls and design principles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Identify and protect sensitive data on the mobile device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Unsafe sensitive data storage, attacks on decommissioned phones unintentional disclosure: Mobile devices (being mobile) have a higher risk of loss or theft. Adequate protection should be built in to minimize the loss of sensitive data on device.&lt;br /&gt;
&lt;br /&gt;
*1.1 In the design phase classify data storage according to sensitivity and apply controls accordingly (e.g. passwords, personal data, location, error logs etc.). Process, store and use data according to its classification. Validate the security of methods applied to sensitive data.&lt;br /&gt;
*1.2 Store sensitive data on the server instead of client-end device. This is based on the assumption that secure network connectivity is always available and that protection mechanisms available to server side storage are superior. The relative security of client vs server-side security also needs to be assessed on a case-by-case basis (see ENISA cloud risk assessment or OWASP Cloud top 10 for decision support).&lt;br /&gt;
*1.3 If possible, use a file encryption API provided by the OS or other trusted source. Some platforms provide file encryption API’s which use a private key protected by the device unlock code and deleted on remote kill. If this is available, it should be used as it increases the security of the encryption without creating extra burden for the end-user. It also makes stored data safer in the case of loss or theft.&lt;br /&gt;
*1.4 Do not store/cache sensitive data (including keys) unless they are encrypted and if possible stored in a tamper-proof area (see 2).&lt;br /&gt;
*1.5 Consider restricting access to sensitive data based on contextual information such as location (e.g. wallet App not usable outside Europe, car key not usable unless within 100m of car etc...).&lt;br /&gt;
*1.6 Do not store historical GPS/tracking or other sensitive information on the device beyond the period required by the application (see 1.8).&lt;br /&gt;
*1.7 Assume that shared storage is untrusted - information may easily leak in unexpected ways through any shared storage. In particular:&lt;br /&gt;
**Be aware of caches and temporary storage as a possible leakage channel when shared with other apps.&lt;br /&gt;
**Be aware of public shared storage such as address book, media gallery, audio files, as a possible leakage channel. For example storing images with location metadata in the media-gallery allows that information to be shared in unintended ways.&lt;br /&gt;
**Do not store temp/cached data in a world readable directory.&lt;br /&gt;
*1.8 Applications on managed devices should leverage remote wipe and kill switch APIs (OS-level or purpose-built) to remove sensitive information from the device in the event of theft or loss.&lt;br /&gt;
*1.9 Data deletion should be scheduled according to a maximum retention period, (to prevent e.g. data remaining in caches indefinitely).&lt;br /&gt;
*1.10 Bear in mind that there is no known secure deletion procedure for flash memory (unless wiping the entire media). Therefore data encryption is especially important.&lt;br /&gt;
*1.11 Consider the security of the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
*1.12 Apply the principle of minimal disclosure - only collect and disclose data which is required for business use of the application. Identify in the design phase what data is needed, its sensitivity and whether it is appropriate to collect, store and use each data type.&lt;br /&gt;
*1.13 Use non-persistent identifiers which are not shared with other apps wherever possible - e.g. do not use the device ID number as an identifier unless there is a good reason to do so (e.g. use a randomly generated number). Apply the same principles to app sessions as to http sessions/cookies etc....&lt;br /&gt;
*1.14 Application developers may want to incorporate an application-specific &amp;quot;data kill switch&amp;quot; into their products, to allow the per-app deletion of their application's sensitive data when needed (strong authentication is required to protect misuse of such a feature).&lt;br /&gt;
&lt;br /&gt;
'''2. Handle password credentials securely on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Spyware, Surveillance, Financial malware, UI impersonation User's password credentials if stolen not only provides unauthorized access to the mobile backend service but potentially many other services/accounts used by the user. Since a majority of the users reuse their passwords.&lt;br /&gt;
&lt;br /&gt;
*2.1 Instead of passwords consider using longer term authorization tokens that can be securely stored on the device. Encrypt the tokens while stored on the device and in transit. Tokens can be issued by the backend service after verifying the user credentials initially. The tokens could be time bounded  to the specific service as well as revokable (if possible server side), thereby minimizing the damage in loss scenarios. Use the latest versions of the authorization standards (such as OAuth 2.0). Make sure that these tokens expire after an appropriate (not too long) delay.&lt;br /&gt;
*2.2 In case passwords need to be stored on the device, leverage the encryption and key-store mechanisms provided by the mobile OS to securely store passwords, password equivalents and authorization tokens. Never store passwords in clear text. Do not store passwords or long term session IDs without appropriate encryption or hashing.&lt;br /&gt;
*2.3 Some devices allow developers to use a Secure Element (e.g. http://www.blackberry.com/developers/docs/7.0.0api/net/rim/device/api/io/nfc/se/SecureElement.html ,  http://code.google.com/p/seek-for-android/  //Check whether NFC only) - the number of devices offering this functionality is likely to increase. Developers should use such capability to store keys, credentials and other sensitive data.&lt;br /&gt;
*2.4 Provide the ability for the mobile user to change/remove passwords on the device. &lt;br /&gt;
*2.5 Password credentials should not be copied to backups.&lt;br /&gt;
*2.6 Consider using visual/pattern based passwords to aid usability.&lt;br /&gt;
*2.7 Check the entropy of all passwords.&lt;br /&gt;
*2.8 Ensure passwords and keys are not visible in cache or logs.&lt;br /&gt;
*2.9 SMS is not a secure channel and cannot be relied upon to send sensitive information.&lt;br /&gt;
*2.10 Do not store any passwords or secrets in the application binary. Do not use a generic shared secret for integration to backend (like embedded password in code). Mobile application binaries can be easily downloaded and reverse engineered.&lt;br /&gt;
&lt;br /&gt;
'''3. Ensure sensitive data is protected in transit'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Network spoofing attacks, Surveillance. The majority of the smartphones are capable of using multiple transport carriers including Wifi, provider network (3G, GSM, CDMA and others), bluetooth. Sensitive data passing through insecure channels could be intercepted.&lt;br /&gt;
&lt;br /&gt;
*3.1 Assume that the network layer is not private. Modern network layer attacks can decrypt provider network encryption, and there is no guarantee that the wifi network will be appropriately encrypted.&lt;br /&gt;
*3.2 Applications should enforce the use of an end-to-end secure channel (such as SSL/TLS) when sending sensitive information on wire/air. This includes passing user credentials, or other authentication equivalents. In some cases this may mean encrypting all communication.&lt;br /&gt;
*3.3 Enforce strong encryption algorithms and key lengths. Do not allow unsigned certificates and allow only reputable certificate authorities. Do not disable or ignore the SSL chain validation. &lt;br /&gt;
*3.4 For sensitive data, to reduce the risk of man-in-middle attacks (like SSL proxy, SSL strip), a secure connection should only be established after verifying the identity of the remote end-point (server). This can be achieved by ensuring that SSL is only established with the end points having the trusted certificates in the key chain.&lt;br /&gt;
*3.5 The user interface should make it as easy as possible for the user to find out if a certificate is valid.&lt;br /&gt;
*3.6 SMS, MMS or notifications should not be used to send sensitive data to or from mobile end points.&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' Google vulnerability of Client Login account credentials on unprotected wifi - [http://www.google.com/url?q=http%3A%2F%2Fwww.uni-ulm.de%2Fin%2Fmi%2Fmitarbeiter%2Fkoenings%2Fcatching-authtokens.html&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFQjCNGO-Yp1KHqO8USuL0zxL1Lpwq1Usw]&lt;br /&gt;
&lt;br /&gt;
'''4. Implement user authentication/authorization and session management correctly'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Unauthorized individuals may obtain access to sensitive data or systems. This can be done by circumventing authentication systems (logins) or by reusing valid tokens or cookies.&lt;br /&gt;
&lt;br /&gt;
*4.1 Require appropriate strength user authentication to the application. It may be useful to provide feedback on the strength of the password when it is being entered for the first time. The strength of the authentication mechanism used depends on the data being processed by the application and its access to valuable resources (e.g. costing money).&lt;br /&gt;
*4.2 It is important to ensure that the session management is done correctly after the initial authentication. Require authentication credentials or tokens to be passed with any subsequent request (especially those granting privileged access or modification). &lt;br /&gt;
*4.3 Use unpredictable session identifiers with high entropy.&lt;br /&gt;
*4.4 Use context to add security to authentication - e.g. device ID, IP location, etc...&lt;br /&gt;
*4.5 Consider using additional authentication factors for applications giving access to sensitive data or interfaces where possible - e.g. voice, fingerprint (if available), who-you-know, behavioural etc...&lt;br /&gt;
*4.6 Use authentication that ties back to the end user identity (rather than the device identity).&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' Google's ClientLogin implementation &lt;br /&gt;
[http://www.google.com/url?q=http%3A%2F%2Fwww.uni-ulm.de%2Fin%2Fmi%2Fmitarbeiter%2Fkoenings%2Fcatching-authtokens.html&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFQjCNGO-Yp1KHqO8USuL0zxL1Lpwq1Usw]&lt;br /&gt;
&lt;br /&gt;
'''5. Keep the backend APIs (services) and the platform (server) secure''' &lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Attacks on backend systems, loss of data via cloud storage. Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. Insecure implementation of backend APIs or services, and not keeping the back-end platform hardened/patched will allow bad guys to directly attack/compromise the back-ends.&lt;br /&gt;
&lt;br /&gt;
*5.1 Carry out a specific check of all data transferred betwen the mobile device and web-server backends and other external interfaces - (e.g. is location or other information transferred within file metadata)&lt;br /&gt;
*5.2 All back-end services (WebServices/REST) for mobile apps should be tested for vulnerabilities periodically e.g. using static code analyzer tools and fuzzing tools for testing and finding security flaws.&lt;br /&gt;
*5.3 Ensure that the back-end platform (server) is running with a hardened configuration with the latest security patches applied to the OS, Web Server and other application components.&lt;br /&gt;
*5.4 Ensure adequate logs are retained on the back-end in order to detect and respond to incidents and perform forensics (within the limits of data protection law).&lt;br /&gt;
*5.6 Employ rate limiting and throttling on a per-user/IP basis (if user identification is available) to reduce the risk from DDoS attack.&lt;br /&gt;
*5.7 Test for DoS vulnerabilities where the server may become overwhelmed by certain resource intensive application calls.&lt;br /&gt;
*5.8 Web Services, REST and APIs can have similar vulnerabilities to Web Applications. Perform testing of the backend Web Service, REST or API to determine vulnerabilities may exist. Perform abuse case testing, in addition to use case testing.&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' [https://www.owasp.org/index.php/Web_Services]&lt;br /&gt;
[http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''6. Perform data integration with third party services/applications securely'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Data Leakage&lt;br /&gt;
&lt;br /&gt;
*6.1 Vet the security/authenticity of any third party code/libraries used in your mobile application (reliable source, supported, no backend Trojans, licensing)&lt;br /&gt;
*6.2 Track all third party frameworks/APIs used in the mobile application for security patches. A corresponding security update must be done for the mobile applications using these third party APIs/frameworks.&lt;br /&gt;
*6.3 Pay particular attention to validating all data received from and sent to  non-trusted third party apps (e.g. ad network software) before processing in the application. //Vinay: Give some specific examples (phishing, injection etc...)&lt;br /&gt;
&lt;br /&gt;
'''7. Pay specific attention to the collection and storage of consent for the collection and use of the user’s data'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Unintentional disclosure of personal or private information. In the European Union, it is mandatory to obtain user consent for the collection of personally identifiable information (PII).&lt;br /&gt;
&lt;br /&gt;
*7.1 Create a privacy policy covering the usage of personal data and make it available to the user especially when making consent choices.&lt;br /&gt;
*7.2 Consent may be collected in 3 main ways:&lt;br /&gt;
**At install time&lt;br /&gt;
**At run-time when data is sent&lt;br /&gt;
**Via “opt-out” mechanisms where a default setting is implemented and the user has to turn it off.&lt;br /&gt;
*7.3 Check whether your application is collecting PII - it may not always be obvious - for example do you use persistent identifiers linked to central data stores containing personal information?&lt;br /&gt;
*7.4 Audit communication mechanisms to check for unintended leaks (e.g. image metadata).&lt;br /&gt;
*7.5 Keep a record of consent to the transfer of PII available to the user (consider also the value of keeping server-side records attached to any user data stored).&lt;br /&gt;
*7.6 Check whether your consent collection-mechanism overlaps or conflicts with any other consent-collection within the same stack (e.g. APP-native + webkit HTML)&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' EU Law [http://democrats.energycommerce.house.gov/sites/default/files/image_uploads/Testimony_05.04.11_Spafford.pdf]&lt;br /&gt;
&lt;br /&gt;
'''8. Implement controls to prevent unauthorised access to paid-for resources (wallet, SMS, phone calls etc...)'''&lt;br /&gt;
'''Risks:''' Smartphone apps give programmatic access to premium rate phone calls, SMS, roaming data, NFC payments etc. Apps with privileged access to such API’s should take particular care to prevent abuse given the financial impact of vulnerabilities giving attackers access to the user’s financial resources.&lt;br /&gt;
&lt;br /&gt;
*8.1 Maintain logs of access to paid resources in a non-repudiable format and make them available to the end-user for monitoring (e.g. signed receipt sent to server back-end). Logs should be protected from unauthorised access.&lt;br /&gt;
*8.2 Check for anomalous usage patterns in paid resource usage and require reauthentication. E.g. when significant change in location occurs, user-language changes etc.&lt;br /&gt;
*8.3 Consider using a white-list model by default for paid resource addressing - e.g. address book only unless specifically authorised for phone calls.&lt;br /&gt;
*8.4 Authenticate all API calls to paid resources (e.g. using an app developer certificate).&lt;br /&gt;
*8.5 Ensure that wallet API callbacks do not pass cleartext account/pricing/ billing/item information.&lt;br /&gt;
*8.6 Warn user and obtain consent for any cost implications for app behaviour.&lt;br /&gt;
*8.7 Implement best practices such as fast dormancy (3GPP), caching etc... to minimise signalling load on base stations.&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' Google Wallet Security [http://www.google.com/wallet/how-it-works-security.html]&lt;br /&gt;
&lt;br /&gt;
'''9. Ensure Secure distribution/provisioning of mobile applications'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' &lt;br /&gt;
//Vinay - check and number. Interaction with the app-store.&lt;br /&gt;
*9.1 Applications must be designed and provisioned to allow updates for security patches, taking into account the requirements for approval by app-stores and the extra delay this may imply.&lt;br /&gt;
*9.2 Provide remote kill functionality &lt;br /&gt;
*9.3 Feedback channels&lt;br /&gt;
*9.4 Code signing for some mobile platforms implies inherent trust between applications (with same code signatures), installed on the same mobile device. Plan code signing mechanisms properly. //Needs elaboration. (Vinay will expand it).&lt;br /&gt;
&lt;br /&gt;
'''10. Carefully check any runtime interpretation of code for errors '''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Runtime interpretation of code covers any opportunity an app gives for untrusted parties to provide unverified text or binary which is interpreted as code. For example, extra levels in a game, scripts, interpreted SMS headers. This gives an opportunity for malware to circumvent walled garden controls. Injection attacks leading to Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
&lt;br /&gt;
*10.1 Minimise runtime interpretation and capabilities offered to runtime interpreters.&lt;br /&gt;
*10.2 Run interpreters at minimal privilege levels.&lt;br /&gt;
*10.3 Fuzz test interpreters.&lt;br /&gt;
*10.4 Note that it is not always obvious that your code is interpreting text. Look for any capabilities accessible via user-input data and use of third party API’s - e.g. javascript interpreters.&lt;br /&gt;
*10.5 Define a comprehensive escape syntax as appropriate.&lt;br /&gt;
//Giles look for an example.&lt;br /&gt;
&lt;br /&gt;
=== Candidates (for consideration) ===&lt;br /&gt;
&lt;br /&gt;
'''A: Some general coding best practices are particularly relevant to mobile coding too'''&lt;br /&gt;
*Input Validation and Output Encoding&lt;br /&gt;
*Minimise lines of code.&lt;br /&gt;
*Use safe languages (e.g. from buffer-overflow).&lt;br /&gt;
*Implement a security report handling point (address) security@example.com &lt;br /&gt;
*Use static and binary code analyzers to find security flaws.&lt;br /&gt;
*Use safe string functions, avoid buffer and Integer overflow.&lt;br /&gt;
*Run with the minimum privilege required for the application on the operating system. Be aware of privileges granted by default by API's and disable them.&lt;br /&gt;
*Don't authorize code/app to execute with root/sa privilege&lt;br /&gt;
*Always perform testing as a standard as well as a privileged user&lt;br /&gt;
*Avoid opening application specific server sockets (listener ports) on the client device. Use the communication mechanisms provided by the OS.&lt;br /&gt;
*Context aware security: may be able to decrease/increase access based on the context (e.g. location, network) - //Vinay - Enterprise Apps (type of wifi, vpn, trusted)&lt;br /&gt;
*Remove all test code before releasing the application&lt;br /&gt;
*Ensure logging is done appropriately but do not record excessive logs, especially including sensitive user information.&lt;br /&gt;
*//What sort of information should be recorded in the logs. (Keep audit data on the server, no user specific data - link to the Apple Issue - Signed Timestamps) //Vinay to add&lt;br /&gt;
&lt;br /&gt;
'''B. Enforce higher security posture on the device for sensitive apps used in an enterprise context:''' // Vinay to check&lt;br /&gt;
*If a sensitive application needs to be provisioned on a device, application can employ enforcement of the certain security posture on the device (such as PIN, remote management/wipe) // Vinay - Still needs to be clarified&lt;br /&gt;
*Enterprise applications can employ this principle of doing a security posture check before deployment of sensitive applications&lt;br /&gt;
*Banking Apps&lt;br /&gt;
*//(Remote Management, PIN enforcement, encryption, application monitoring)&lt;br /&gt;
**Device cert can be used for stronger device identity. // How to make sure that this does not provide linkability between transactions (i.e. using the same cert across different service providers leaks data). I guess zero-knowledge certificates are too far-out for this guidance? Is this a common feature - device-cert - I have not come across it.&lt;br /&gt;
&lt;br /&gt;
'''C. Protect your application from other malicious applications on the device'''&lt;br /&gt;
&lt;br /&gt;
Risk: User's are prone to install applications that look cool (may be malicious) and can transmit data about user (or stored data) for malicious purpose.&lt;br /&gt;
&lt;br /&gt;
*(?? What guidelines could be provided to developers)&lt;br /&gt;
U*ser education on using due diligence while installing third party applications on mobile devices&lt;br /&gt;
&lt;br /&gt;
'''D. Provide or use an existing reporting channel for phishing from apps '''&lt;br /&gt;
&lt;br /&gt;
(e.g. if you are a browser plugin developer). //APWG? Can we recommend one?&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=114475</id>
		<title>Projects/OWASP Mobile Security Project - Top Ten Mobile Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=114475"/>
				<updated>2011-07-23T13:22:01Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Top 10 mobile controls and design principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Top 10 mobile controls and design principles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Identify and protect sensitive data on the mobile device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Unsafe sensitive data storage, attacks on decommissioned phones unintentional disclosure: Mobile devices (being mobile) have a higher risk of loss or theft. Adequate protection should be built in to minimize the loss of sensitive data on device.&lt;br /&gt;
&lt;br /&gt;
*1.1 In the design phase classify data storage according to sensitivity and apply controls accordingly (e.g. passwords, personal data, location, error logs etc.). Process, store and use data according to its classification. Validate the security of methods applied to sensitive data.&lt;br /&gt;
*1.2 Store sensitive data on the server instead of client-end device. This is based on the assumption that secure network connectivity is always available and that protection mechanisms available to server side storage are superior. The relative security of client vs server-side security also needs to be assessed on a case-by-case basis (see ENISA cloud risk assessment or OWASP Cloud top 10 for decision support).&lt;br /&gt;
*1.3 If possible, use a file encryption API provided by the OS or other trusted source. Some platforms provide file encryption API’s which use a private key protected by the device unlock code and deleted on remote kill. If this is available, it should be used as it increases the security of the encryption without creating extra burden for the end-user. It also makes stored data safer in the case of loss or theft.&lt;br /&gt;
*1.4 Do not store/cache sensitive data (including keys) unless they are encrypted and if possible stored in a tamper-proof area (see 2).&lt;br /&gt;
*1.5 Consider restricting access to sensitive data based on contextual information such as location (e.g. wallet App not usable outside Europe, car key not usable unless within 100m of car etc...).&lt;br /&gt;
*1.6 Do not store historical GPS/tracking or other sensitive information on the device beyond the period required by the application (see 1.8).&lt;br /&gt;
*1.7 Assume that shared storage is untrusted - information may easily leak in unexpected ways through any shared storage. In particular:&lt;br /&gt;
**Be aware of caches and temporary storage as a possible leakage channel when shared with other apps.&lt;br /&gt;
**Be aware of public shared storage such as address book, media gallery, audio files, as a possible leakage channel. For example storing images with location metadata in the media-gallery allows that information to be shared in unintended ways.&lt;br /&gt;
**Do not store temp/cached data in a world readable directory.&lt;br /&gt;
*1.8 Applications on managed devices should leverage remote wipe and kill switch APIs (OS-level or purpose-built) to remove sensitive information from the device in the event of theft or loss.&lt;br /&gt;
*1.9 Data deletion should be scheduled according to a maximum retention period, (to prevent e.g. data remaining in caches indefinitely).&lt;br /&gt;
*1.10 Bear in mind that there is no known secure deletion procedure for flash memory (unless wiping the entire media). Therefore data encryption is especially important.&lt;br /&gt;
*1.11 Consider the security of the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
*1.12 Apply the principle of minimal disclosure - only collect and disclose data which is required for business use of the application. Identify in the design phase what data is needed, its sensitivity and whether it is appropriate to collect, store and use each data type.&lt;br /&gt;
*1.13 Use non-persistent identifiers which are not shared with other apps wherever possible - e.g. do not use the device ID number as an identifier unless there is a good reason to do so (e.g. use a randomly generated number). Apply the same principles to app sessions as to http sessions/cookies etc....&lt;br /&gt;
*1.14 Application developers may want to incorporate an application-specific &amp;quot;data kill switch&amp;quot; into their products, to allow the per-app deletion of their application's sensitive data when needed (strong authentication is required to protect misuse of such a feature).&lt;br /&gt;
&lt;br /&gt;
'''2. Handle password credentials securely on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Spyware, Surveillance, Financial malware, UI impersonation User's password credentials if stolen not only provides unauthorized access to the mobile backend service but potentially many other services/accounts used by the user. Since a majority of the users reuse their passwords.&lt;br /&gt;
&lt;br /&gt;
*2.1 Instead of passwords consider using longer term authorization tokens that can be securely stored on the device. Encrypt the tokens while stored on the device and in transit. Tokens can be issued by the backend service after verifying the user credentials initially. The tokens could be time bounded  to the specific service as well as revokable (if possible server side), thereby minimizing the damage in loss scenarios. Use the latest versions of the authorization standards (such as OAuth 2.0). Make sure that these tokens expire after an appropriate (not too long) delay.&lt;br /&gt;
*2.2 In case passwords need to be stored on the device, leverage the encryption and key-store mechanisms provided by the mobile OS to securely store passwords, password equivalents and authorization tokens. Never store passwords in clear text. Do not store passwords or long term session IDs without appropriate encryption or hashing.&lt;br /&gt;
*2.3 Some devices allow developers to use a Secure Element (e.g. http://www.blackberry.com/developers/docs/7.0.0api/net/rim/device/api/io/nfc/se/SecureElement.html ,  http://code.google.com/p/seek-for-android/  //Check whether NFC only) - the number of devices offering this functionality is likely to increase. Developers should use such capability to store keys, credentials and other sensitive data.&lt;br /&gt;
*2.4 Provide the ability for the mobile user to change/remove passwords on the device. &lt;br /&gt;
*2.5 Password credentials should not be copied to backups.&lt;br /&gt;
*2.6 Consider using visual/pattern based passwords to aid usability.&lt;br /&gt;
*2.7 Check the entropy of all passwords.&lt;br /&gt;
*2.8 Ensure passwords and keys are not visible in cache or logs.&lt;br /&gt;
*2.9 SMS is not a secure channel and cannot be relied upon to send sensitive information.&lt;br /&gt;
*2.10 Do not store any passwords or secrets in the application binary. Do not use a generic shared secret for integration to backend (like embedded password in code). Mobile application binaries can be easily downloaded and reverse engineered.&lt;br /&gt;
&lt;br /&gt;
'''3. Ensure sensitive data is protected in transit'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Network spoofing attacks, Surveillance. The majority of the smartphones are capable of using multiple transport carriers including Wifi, provider network (3G, GSM, CDMA and others), bluetooth. Sensitive data passing through insecure channels could be intercepted.&lt;br /&gt;
&lt;br /&gt;
*3.1 Assume that the network layer is not private. Modern network layer attacks can decrypt provider network encryption, and there is no guarantee that the wifi network will be appropriately encrypted.&lt;br /&gt;
*3.2 Applications should enforce the use of an end-to-end secure channel (such as SSL/TLS) when sending sensitive information on wire/air. This includes passing user credentials, or other authentication equivalents. In some cases this may mean encrypting all communication.&lt;br /&gt;
*3.3 Enforce strong encryption algorithms and key lengths. Do not allow unsigned certificates and allow only reputable certificate authorities. Do not disable or ignore the SSL chain validation. &lt;br /&gt;
*3.4 For sensitive data, to reduce the risk of man-in-middle attacks (like SSL proxy, SSL strip), a secure connection should only be established after verifying the identity of the remote end-point (server). This can be achieved by ensuring that SSL is only established with the end points having the trusted certificates in the key chain.&lt;br /&gt;
*3.5 The user interface should make it as easy as possible for the user to find out if a certificate is valid.&lt;br /&gt;
*3.6 SMS, MMS or notifications should not be used to send sensitive data to or from mobile end points.&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' Google vulnerability of Client Login account credentials on unprotected wifi - [http://www.google.com/url?q=http%3A%2F%2Fwww.uni-ulm.de%2Fin%2Fmi%2Fmitarbeiter%2Fkoenings%2Fcatching-authtokens.html&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFQjCNGO-Yp1KHqO8USuL0zxL1Lpwq1Usw]&lt;br /&gt;
&lt;br /&gt;
'''4. Implement user authentication/authorization and session management correctly'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Unauthorized individuals may obtain access to sensitive data or systems. This can be done by circumventing authentication systems (logins) or by reusing valid tokens or cookies.&lt;br /&gt;
&lt;br /&gt;
*4.1 Require appropriate strength user authentication to the application. It may be useful to provide feedback on the strength of the password when it is being entered for the first time. The strength of the authentication mechanism used depends on the data being processed by the application and its access to valuable resources (e.g. costing money).&lt;br /&gt;
*4.2 It is important to ensure that the session management is done correctly after the initial authentication. Require authentication credentials or tokens to be passed with any subsequent request (especially those granting privileged access or modification). &lt;br /&gt;
*4.3 Use unpredictable session identifiers with high entropy.&lt;br /&gt;
*4.4 Use context to add security to authentication - e.g. device ID, IP location, etc...&lt;br /&gt;
*4.5 Consider using additional authentication factors for applications giving access to sensitive data or interfaces where possible - e.g. voice, fingerprint (if available), who-you-know, behavioural etc...&lt;br /&gt;
*4.6 Use authentication that ties back to the end user identity (rather than the device identity).&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' Google's ClientLogin implementation &lt;br /&gt;
[http://www.google.com/url?q=http%3A%2F%2Fwww.uni-ulm.de%2Fin%2Fmi%2Fmitarbeiter%2Fkoenings%2Fcatching-authtokens.html&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFQjCNGO-Yp1KHqO8USuL0zxL1Lpwq1Usw]&lt;br /&gt;
&lt;br /&gt;
'''5. Keep the backend APIs (services) and the platform (server) secure''' &lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Attacks on backend systems, loss of data via cloud storage. Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. Insecure implementation of backend APIs or services, and not keeping the back-end platform hardened/patched will allow bad guys to directly attack/compromise the back-ends.&lt;br /&gt;
&lt;br /&gt;
*5.1 Carry out a specific check of all data transferred betwen the mobile device and web-server backends and other external interfaces - (e.g. is location or other information transferred within file metadata)&lt;br /&gt;
*5.2 All back-end services (WebServices/REST) for mobile apps should be tested for vulnerabilities periodically e.g. using static code analyzer tools and fuzzing tools for testing and finding security flaws.&lt;br /&gt;
*5.3 Ensure that the back-end platform (server) is running with a hardened configuration with the latest security patches applied to the OS, Web Server and other application components.&lt;br /&gt;
*5.4 Ensure adequate logs are retained on the back-end in order to detect and respond to incidents and perform forensics (within the limits of data protection law).&lt;br /&gt;
*5.6 Employ rate limiting and throttling on a per-user/IP basis (if user identification is available) to reduce the risk from DDoS attack.&lt;br /&gt;
*5.7 Test for DoS vulnerabilities where the server may become overwhelmed by certain resource intensive application calls.&lt;br /&gt;
*5.8 Web Services, REST and APIs can have similar vulnerabilities to Web Applications. Perform testing of the backend Web Service, REST or API to determine vulnerabilities may exist. Perform abuse case testing, in addition to use case testing.&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' [https://www.owasp.org/index.php/Web_Services]&lt;br /&gt;
[http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''6. Perform data integration with third party services/applications securely'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Data Leakage&lt;br /&gt;
&lt;br /&gt;
*6.1 Vet the security/authenticity of any third party code/libraries used in your mobile application (reliable source, supported, no backend Trojans, licensing)&lt;br /&gt;
*6.2 Track all third party frameworks/APIs used in the mobile application for security patches. A corresponding security update must be done for the mobile applications using these third party APIs/frameworks.&lt;br /&gt;
*6.3 Pay particular attention to validating all data received from and sent to  non-trusted third party apps (e.g. ad network software) before processing in the application. //Vinay: Give some specific examples (phishing, injection etc...)&lt;br /&gt;
&lt;br /&gt;
'''7. Pay specific attention to the collection and storage of consent for the collection and use of the user’s data'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Unintentional disclosure of personal or private information. In the European Union, it is mandatory to obtain user consent for the collection of personally identifiable information (PII).&lt;br /&gt;
&lt;br /&gt;
*7.1 Create a privacy policy covering the usage of personal data and make it available to the user especially when making consent choices.&lt;br /&gt;
*7.2 Consent may be collected in 3 main ways:&lt;br /&gt;
**At install time&lt;br /&gt;
**At run-time when data is sent&lt;br /&gt;
**Via “opt-out” mechanisms where a default setting is implemented and the user has to turn it off.&lt;br /&gt;
*7.3 Check whether your application is collecting PII - it may not always be obvious - for example do you use persistent identifiers linked to central data stores containing personal information?&lt;br /&gt;
*7.4 Audit communication mechanisms to check for unintended leaks (e.g. image metadata).&lt;br /&gt;
*7.5 Keep a record of consent to the transfer of PII available to the user (consider also the value of keeping server-side records attached to any user data stored).&lt;br /&gt;
*7.6 Check whether your consent collection-mechanism overlaps or conflicts with any other consent-collection within the same stack (e.g. APP-native + webkit HTML)&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' EU Law [http://democrats.energycommerce.house.gov/sites/default/files/image_uploads/Testimony_05.04.11_Spafford.pdf]&lt;br /&gt;
&lt;br /&gt;
'''8. Implement controls to prevent unauthorised access to paid-for resources (wallet, SMS, phone calls etc...)'''&lt;br /&gt;
'''Risks:''' Smartphone apps give programmatic access to premium rate phone calls, SMS, roaming data, NFC payments etc. Apps with privileged access to such API’s should take particular care to prevent abuse given the financial impact of vulnerabilities giving attackers access to the user’s financial resources.&lt;br /&gt;
&lt;br /&gt;
*8.1 Maintain logs of access to paid resources in a non-repudiable format and make them available to the end-user for monitoring (e.g. signed receipt sent to server back-end). Logs should be protected from unauthorised access.&lt;br /&gt;
*8.2 Check for anomalous usage patterns in paid resource usage and require reauthentication. E.g. when significant change in location occurs, user-language changes etc.&lt;br /&gt;
*8.3 Consider using a white-list model by default for paid resource addressing - e.g. address book only unless specifically authorised for phone calls.&lt;br /&gt;
*8.4 Authenticate all API calls to paid resources (e.g. using an app developer certificate).&lt;br /&gt;
*8.5 Ensure that wallet API callbacks do not pass cleartext account/pricing/ billing/item information.&lt;br /&gt;
*8.6 Warn user and obtain consent for any cost implications for app behaviour.&lt;br /&gt;
*8.7 Implement best practices such as fast dormancy (3GPP), caching etc... to minimise signalling load on base stations.&lt;br /&gt;
&lt;br /&gt;
'''Reference:''' Google Wallet Security [http://www.google.com/wallet/how-it-works-security.html]&lt;br /&gt;
&lt;br /&gt;
'''9. Ensure Secure distribution/provisioning of mobile applications'''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' &lt;br /&gt;
//Vinay - check and number. Interaction with the app-store.&lt;br /&gt;
*9.1 Applications must be designed and provisioned to allow updates for security patches, taking into account the requirements for approval by app-stores and the extra delay this may imply.&lt;br /&gt;
*9.2 Provide remote kill functionality &lt;br /&gt;
*9.3 Feedback channels&lt;br /&gt;
*9.4 Code signing for some mobile platforms implies inherent trust between applications (with same code signatures), installed on the same mobile device. Plan code signing mechanisms properly. //Needs elaboration. (Vinay will expand it).&lt;br /&gt;
&lt;br /&gt;
'''10. Carefully check any runtime interpretation of code for errors '''&lt;br /&gt;
&lt;br /&gt;
'''Risks:''' Runtime interpretation of code covers any opportunity an app gives for untrusted parties to provide unverified text or binary which is interpreted as code. For example, extra levels in a game, scripts, interpreted SMS headers. This gives an opportunity for malware to circumvent walled garden controls. Injection attacks leading to Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
&lt;br /&gt;
*10.1 Minimise runtime interpretation and capabilities offered to runtime interpreters.&lt;br /&gt;
*10.2 Run interpreters at minimal privilege levels.&lt;br /&gt;
*10.3 Fuzz test interpreters.&lt;br /&gt;
*10.4 Note that it is not always obvious that your code is interpreting text. Look for any capabilities accessible via user-input data and use of third party API’s - e.g. javascript interpreters.&lt;br /&gt;
*10.5 Define a comprehensive escape syntax as appropriate.&lt;br /&gt;
//Giles look for an example.&lt;br /&gt;
&lt;br /&gt;
=== Candidates (for consideration) ===&lt;br /&gt;
&lt;br /&gt;
A: Some general coding best practices are particularly relevant to mobile coding too&lt;br /&gt;
Input Validation and Output Encoding&lt;br /&gt;
Minimise lines of code.&lt;br /&gt;
Use safe languages (e.g. from buffer-overflow).&lt;br /&gt;
Implement a security report handling point (address) security@example.com &lt;br /&gt;
Use static and binary code analyzers to find security flaws.&lt;br /&gt;
Use safe string functions, avoid buffer and Integer overflow.&lt;br /&gt;
Run with the minimum privilege required for the application on the operating system. Be aware of privileges granted by default by API's and disable them.&lt;br /&gt;
Don't authorize code/app to execute with root/sa privilege&lt;br /&gt;
Always perform testing as a standard as well as a privileged user&lt;br /&gt;
Avoid opening application specific server sockets (listener ports) on the client device. Use the communication mechanisms provided by the OS.&lt;br /&gt;
Context aware security: may be able to decrease/increase access based on the context (e.g. location, network) - //Vinay - Enterprise Apps (type of wifi, vpn, trusted)&lt;br /&gt;
Remove all test code before releasing the application&lt;br /&gt;
Ensure logging is done appropriately but do not record excessive logs, especially including sensitive user information.&lt;br /&gt;
&lt;br /&gt;
//What sort of information should be recorded in the logs. (Keep audit data on the server, no user specific data - link to the Apple Issue - Signed Timestamps) //Vinay to add&lt;br /&gt;
&lt;br /&gt;
B. Enforce higher security posture on the device for sensitive apps used in an enterprise context: // Vinay to check&lt;br /&gt;
If a sensitive application needs to be provisioned on a device, application can employ enforcement of the certain security posture on the device (such as PIN, remote management/wipe) // Vinay - Still needs to be clarified&lt;br /&gt;
Enterprise applications can employ this principle of doing a security posture check before deployment of sensitive applications&lt;br /&gt;
Banking Apps&lt;br /&gt;
//(Remote Management, PIN enforcement, encryption, application monitoring)&lt;br /&gt;
Device cert can be used for stronger device identity. // How to make sure that this does not provide linkability between transactions (i.e. using the same cert across different service providers leaks data). I guess zero-knowledge certificates are too far-out for this guidance? Is this a common feature - device-cert - I have not come across it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
C. Protect your application from other malicious applications on the device&lt;br /&gt;
&lt;br /&gt;
Risk: User's are prone to install applications that look cool (may be malicious) and can transmit data about user (or stored data) for malicious purpose.&lt;br /&gt;
&lt;br /&gt;
(?? What guidelines could be provided to developers)&lt;br /&gt;
User education on using due diligence while installing third party applications on mobile devices&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
D. Provide or use an existing reporting channel for phishing from apps &lt;br /&gt;
&lt;br /&gt;
(e.g. if you are a browser plugin developer). //APWG? Can we recommend one?&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project&amp;diff=113978</id>
		<title>Projects/OWASP Mobile Security Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project&amp;diff=113978"/>
				<updated>2011-07-16T11:24:51Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:&amp;lt;includeonly&amp;gt;{{{1}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;Project About&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
| project_name = OWASP Mobile Security Project&lt;br /&gt;
| project_home_page = OWASP_Mobile_Security_Project&lt;br /&gt;
| project_description = &lt;br /&gt;
The rapid growth of mobile computing has made the need for secure mobile development absolutely essential.  The OWASP Mobile Security Project will help the community better understand the risks present in mobile applications, and learn to defend against them. This project will be forked into each of the following platforms:&lt;br /&gt;
* iOS Project&lt;br /&gt;
* Android Project&lt;br /&gt;
* webOS Project&lt;br /&gt;
* Windows Mobile Project&lt;br /&gt;
* Blackberry Project&lt;br /&gt;
   &lt;br /&gt;
| project_license =&lt;br /&gt;
&lt;br /&gt;
| leader_name1 = Jack Mannino &lt;br /&gt;
| leader_email1 = Jack@nvisiumsecurity.com&lt;br /&gt;
| leader_username1 = Jack Mannino&lt;br /&gt;
&lt;br /&gt;
| leader_name2 = Mike Zusman&lt;br /&gt;
| leader_email2 = mike.zusman@owasp.org&lt;br /&gt;
| leader_username2 = schmoilito&lt;br /&gt;
&lt;br /&gt;
| leader_name3 = Zach Lanier&lt;br /&gt;
| leader_email3 = zach.lanier@n0where.org&lt;br /&gt;
| leader_username3 = Zach_Lanier&lt;br /&gt;
&lt;br /&gt;
| leader_name4 = Giles Hogben&lt;br /&gt;
| leader_email4 = giles.hogben@enisa.europa.eu&lt;br /&gt;
| leader_username4 =  Giles Hogben&lt;br /&gt;
&lt;br /&gt;
| leader_name5 = Vinay Bansal&lt;br /&gt;
|leader_email5 = vinay.bansal@cisco.com&lt;br /&gt;
| leader_username5 =  Vinaykbansal&lt;br /&gt;
&lt;br /&gt;
| contributor_name2 = Jim Manico&lt;br /&gt;
| contributor_email2 = jim.manico@owasp.org&lt;br /&gt;
| contributor_username2= jmanico&lt;br /&gt;
&lt;br /&gt;
| contributor_name1 = David Lindner&lt;br /&gt;
| contributor_email1 = david.lindner@aspectsecurity.com&lt;br /&gt;
| contributor_username1 = David Lindner&lt;br /&gt;
&lt;br /&gt;
| contributor_name3 = Tom Neaves&lt;br /&gt;
| contributor_email3 = tom.neaves@verizonbusiness.com&lt;br /&gt;
| contributor_username3 = Tom Neaves&lt;br /&gt;
&lt;br /&gt;
| contributor_name4 = Kuai Hinojosa&lt;br /&gt;
| contributor_email4 = Kuai.Hinojosa@owasp.org&lt;br /&gt;
| contributor_username4 = Webappsecguy&lt;br /&gt;
&lt;br /&gt;
| contributor_name6 = Zach Lanier&lt;br /&gt;
| contributor_email6 = zach.lanier@intrepidusgroup.com&lt;br /&gt;
| contributor_username6 =  Zach_Lanier&lt;br /&gt;
&lt;br /&gt;
| contributor_name7 = Ludovic Petit&lt;br /&gt;
| contributor_email7 = ludovic.petit@owasp.org&lt;br /&gt;
| contributor_username7 =  Ludovic Petit&lt;br /&gt;
&lt;br /&gt;
| contributor_name8 = Zaki Akhmad&lt;br /&gt;
| contributor_email8 = za@owasp.org&lt;br /&gt;
| contributor_username8 =  Zakiakhmad&lt;br /&gt;
&lt;br /&gt;
| pamphlet_link = &lt;br /&gt;
&lt;br /&gt;
| presentation_link =&lt;br /&gt;
&lt;br /&gt;
| mailing_list_name = https://lists.owasp.org/mailman/listinfo/owasp-mobile-security-project&lt;br /&gt;
&lt;br /&gt;
| project_road_map = http://www.owasp.org/index.php/Projects/OWASP_Mobile_Security_Project/Roadmap&lt;br /&gt;
&lt;br /&gt;
| links_url[1-10] = &lt;br /&gt;
&lt;br /&gt;
| links_name[1-10] = &lt;br /&gt;
&lt;br /&gt;
| release_1 = &lt;br /&gt;
| release_2 = &lt;br /&gt;
| release_3 =&lt;br /&gt;
| release_4 =&lt;br /&gt;
&amp;lt;!--- The line below is for GPC usage only. Please do not edit it ---&amp;gt;&lt;br /&gt;
| project_about_page = Projects/OWASP Mobile Security Project&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111363</id>
		<title>Projects/OWASP Mobile Security Project - Top Ten Mobile Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111363"/>
				<updated>2011-06-01T12:56:28Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Top 10 mobile controls and design principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Top 10 mobile controls and design principles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Identify and protect sensitive data on the mobile device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Unsafe sensitive data storage, attacks on decommissioned phones unintentional disclosure:&lt;br /&gt;
Mobile devices (being mobile) have a higher risk of getting lost, stolen. And it is trivial to Jailbreak or root the device once someone has physical possession of the device. Adequate protection be built to minimize the loss of sensitive data on device.&lt;br /&gt;
&lt;br /&gt;
** In the design phase analyze what data is sensitive and needs to be protected and apply appropriate controls (user personal/privacy data, password credentials etc.).&lt;br /&gt;
** Store sensitive data on the server instead of client-end  device, if possible.&lt;br /&gt;
** Leverage the encryption and key-store mechanism provided by the mobile OS/hardware (e.g. SIM card) to secure sensitive data. In case no good key management is available on the client-end, storing keys on the server side could be considered.&lt;br /&gt;
** Do not store/cache sensitive data on removable media unless they are tamper-proof and password protected.&lt;br /&gt;
** Use only protected temp/cache directories (Do not store temp/cached data in a world readable directory) //define protected&lt;br /&gt;
** Automatically delete data which is no longer required from device &lt;br /&gt;
** Be aware of caches and temporary storage as a possible leakage channel&lt;br /&gt;
** Be aware of shared data storage (e.g. address book, media gallery) as a possible leakage channel.&lt;br /&gt;
** Managed devices should leverage remote wipe and kill switch to remove sensitive information from the device&lt;br /&gt;
** Schedule deletion according to time, rather than on a push-pop basis (to prevent e.g. data remaining in caches indefinitely)&lt;br /&gt;
** Use secure deletion procedures e.g. conforming to NIST 800-88 .&lt;br /&gt;
** Be careful when sharing cache data with other applications (check for covert channels leaking sensitive data)&lt;br /&gt;
** Carry out a specific check of all communication with web-server backends and other interfaces with trust boundaries - (e.g. is location or other information transferred within file metadata) &lt;br /&gt;
** Consider the security of the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
** Where possible classify data storage according to sensitivity and apply controls accordingly (e.g. passwords, contact data, location vs error logs).&lt;br /&gt;
** Apply the principle of minimal disclosure - only collect and disclose data which is required for the application (how to know what this is?)&lt;br /&gt;
** Use non-persistent identifiers which are not shared with other apps wherever possible - e.g. do not use the device ID number as an identifier unless there is a good reason to do so.&lt;br /&gt;
** Apply techniques for the detection of covert channels - e.g. covert flow trees to discover information which may flow through shared resources such as file systems, resource use etc...&lt;br /&gt;
** For cryptographic keys, implement key management best practice including exploiting SIM card capabilities where possible //todo research mor and hook to best practice.&lt;br /&gt;
&lt;br /&gt;
'''2. Handle password credentials securely  on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Spyware, Surveillance, Financial malware, UI impersonation&lt;br /&gt;
User's password credentials if stolen not only provides unauthorized access to the mobile backend service but potentially many other services/accounts used by the user. Since a majority of the users  reuse their passwords (http://www.pcworld.com/article/188763/too_many_people_reuse_logins_study_finds.html )&lt;br /&gt;
&lt;br /&gt;
**Instead of passwords consider using longer term authorization tokens that can be securely stored on the device . Encrypt the tokens while stored on the device and in transit. Tokens can be issued by the backend service after verifying the user credentials initially. And the tokens could be time bound to the specific service, minimizing the damage in loss scenarios. Consider using the latest versions of the authorization standards (such as OAuth 2.0).&lt;br /&gt;
**In case passwords need to be stored on the device leverage the encryption and key-store mechanism provided by the mobile OS/hardware to securely store password credentials&lt;br /&gt;
**Provide mechanisms to the mobile user to change/remove passwords on the device (renew tokens)&lt;br /&gt;
**Password credentials should be marked to avoid being copied to backups&lt;br /&gt;
**Access to highly sensitive data (e.g. access to wallet) should be protected by a PIN.&lt;br /&gt;
**Consider using visual/pattern based passwords to aid usability.&lt;br /&gt;
**Ensure passwords and keys are not visible in cache or logs&lt;br /&gt;
**We recommend that one-time codes or any kind of password (OTP) should not be forwarded via SMS where (as on most smartphones) an alternative, more secure channel is available. Consider using HTTPS with client authentication (see 3.) to prevent Zeus-in-the-mobile style attacks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Ensure sensitive data is protected in transit''' &lt;br /&gt;
&lt;br /&gt;
'''Risks''': Network spoofing attacks, Surveillance&lt;br /&gt;
Majority of the smartphones are capable of using multiple transport carriers including Wifi, provider network(3G, GSM,..), bluetooth. Sensitive data passing through insecure channels could be intercepted.&lt;br /&gt;
&lt;br /&gt;
**Protecting Data in transit (assume the worst case, user sitting in a public unprotected wifi )&lt;br /&gt;
**Applications should enforce the use of the end-end secure channel (such as SSL/TLS) when sending sensitive information on wire/air. (Do not assume transport encryption)&lt;br /&gt;
**For sensitive data, to reduce the risk of man-in-middle (like SSL proxy), secure connection should only be established  after verifying the credentials of remote end-point (server). This can be achieved by ensuring that SSL is only established with the end points having the trusted certificates in key chain.&lt;br /&gt;
** Do not disable or ignore the SSL chain validation.  &lt;br /&gt;
** SMS, MMS or notifications should not be used to send sensitive data to mobile end points.&lt;br /&gt;
** For one-time-password values, rather than SMS, consider using https with client authentication (i.e. OTP is sent to smartphone over https and smartphone is authenticated to prevent interception).&lt;br /&gt;
** Consider use of GSM encryption-on flags to verify that GSM encryption is on.&lt;br /&gt;
** Provide appropriate trust cues for linking to unknown third party applications.&lt;br /&gt;
** Do not train users to follow untrusted paths (e.g. accept invalid certificates).&lt;br /&gt;
** Provide a reporting channel for phishing from apps (e.g. if you are a browser plugin developer). &lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google vulnerability of Client Login account credentials on unprotected wifi [http://www.uni-ulm.de/in/mi/mitarbeiter/koenings/catching-authtokens.html]&lt;br /&gt;
&lt;br /&gt;
'''4. Keep the back-end API and mobile platform secure'''&lt;br /&gt;
//Downgrade this control&lt;br /&gt;
'''Risks''': Attacks on back-ends through mobile device, loss of data via cloud storage. Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. Insecure implementation of backend APIs or services, and not keeping the back-end platform hardened/patched will allow bad guys to directly attack/compromise the back-ends.&lt;br /&gt;
&lt;br /&gt;
**Web Services/ SOAP/ REST , security best practices (placeholder)&lt;br /&gt;
** Input validation&lt;br /&gt;
** Do not use a generic  shared secret for integration to backend (like embedded password in code)&lt;br /&gt;
**Use authentication that ties back to the end user identity (rather than the device identity)&lt;br /&gt;
**Ensure authorization controls are done correctly in the backend APIs.&lt;br /&gt;
**Ensure that the backend platform is running on a hardened configuration with latest security patches&lt;br /&gt;
**Employ rate limiting and throttling, test for DDoS vulnerabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5. Implement user authentication/authorization and session management  correctly'''&lt;br /&gt;
'''Risks''': &lt;br /&gt;
**Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. It is important to ensure that the session management is done correctly after the initial authentication.&lt;br /&gt;
**User authentication must be based on user's credentials. //??&lt;br /&gt;
**Use unpredictable session identifier with high entropy&lt;br /&gt;
**Do not use device id (UDID or IMEI) as a session identifier. Device Id is easy to spoof and potentially leaks private information when linked to other data.&lt;br /&gt;
**Session tokens can be cached using the operating system features to encrypt while in storage on device (e.g. Keychains).  //This sentence not clear&lt;br /&gt;
** Implement best practices for dormancy (3GPP), caching etc... to minimise signalling load on base stations.&lt;br /&gt;
** Warn user and obtain consent for any cost implications for app behaviour. // and other consent best practices.&lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google's ClientLogin implementation [http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html]&lt;br /&gt;
&lt;br /&gt;
'''6. Ensure strong vulnerability and patch management in place'''&lt;br /&gt;
//Downgrade and mix with #4&lt;br /&gt;
**All the back-end APIs (WebServices/REST) for mobile apps must be tested for vulnerabilities periodically.&lt;br /&gt;
** Developers should use static code analyzer tools and fuzzing tools for testing and finding security flaws.&lt;br /&gt;
**Applications must be designed and provisioned to allow updates for security patches, taking into account the requirements for approval by app-stores and the extra delay this may imply.&lt;br /&gt;
** Understand and test your patching process and its the interaction with the app-store - what is a typical time-frame are any updates possible (e.g. config files) without the approval of the app-store?&lt;br /&gt;
**Application team is responsible for tracking all third party frameworks/APIs used in the mobile application for security patches. A corresponding security update must be done for the mobile application using these third party APIs/frameworks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''7. Perform data integration with third party backend applications correctly'''&lt;br /&gt;
Risks: Unintended disclosure&lt;br /&gt;
** User informed if any personal data is collected or sent //This needs to be detailed - how to inform - one-time, on install, depending on the type of data etc...?&lt;br /&gt;
**No sensitive or user personal data is sent or shared with a third party/social site without prior approval and knowledge of the user. Link to 1. audit communication mechanisms to check for unintended leaks (e.g. image metadata). // ditto&lt;br /&gt;
**Validate all data received from the non-trusted third party before processing in the application. //What should be validated. Is this mobile-speciifc?&lt;br /&gt;
** Do not send data which is not required for the functioning of the application unless you have obtained the explicit consent of the user.&lt;br /&gt;
&lt;br /&gt;
'''8. Run the mobile client using minimal permission''' &lt;br /&gt;
Risks: Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
&lt;br /&gt;
**Run with the minimum privilege required for the application on the operating system. &lt;br /&gt;
**Don't authorize code/app to execute with root/sa privilege&lt;br /&gt;
**Always perform testing as a standard user along with the privileged user&lt;br /&gt;
**Least privilege. Be aware of privileges granted by default by API's and disable them.&lt;br /&gt;
**Avoid opening application specific server sockets (listener ports) on the client device. Use the communication mechanisms provided by the OS. &lt;br /&gt;
&lt;br /&gt;
'''9. Enforce higher  security posture on the device for sensitive apps''' &lt;br /&gt;
//Reword May need to go in a separate enterprise security management point&lt;br /&gt;
**If a sensitive application needs to be provisioned on a device, application can employ enforcement of the  certain security posture on the device (such as PIN, remote management/wipe) // Still needs to be clarified&lt;br /&gt;
** Enterprise applications can employ this principle of doing a security posture check before deployment of sensitive applications&lt;br /&gt;
** Banking Apps &lt;br /&gt;
//(Remote Management, PIN enforcement, encryption, application monitoring)&lt;br /&gt;
** Device cert can be used for stronger device identity. // How to make sure that this does not provide linkability between transactions (i.e. using the same cert across different service providers leaks data). I guess zero-knowledge certificates are too far-out for this guidance? Is this a common feature - device-cert - I have not come across it...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10. Carefully check any runtime interpretation of code for errors''' &lt;br /&gt;
Runtime interpretation of code covers any opportunity an app gives for untrusted parties to provide unverified text or binary which is interpreted as code. For example, extra levels in a game, scripts, interpreted SMS headers. This gives an opportunity for malware to circumvent walled garden controls. &lt;br /&gt;
Risks: Injection attacks leading to Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
//Please check and add advice here.&lt;br /&gt;
** Note that it is not always obvious that your code is interpreting text. Look for any capabilities accessible via user-input data. &lt;br /&gt;
** Run interpreters at minimal privilege levels&lt;br /&gt;
** Fuzz test interpreters&lt;br /&gt;
** Define comprehensive and complete escape syntax (not sure if this is theortically possible).&lt;br /&gt;
** Follow security best practice for implementation of runtime interpreters (be careful when implementing anything which turns user input into executable code). //Hook... (Angry bird attack)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''11. Employ the secure coding/development practices'''&lt;br /&gt;
// Let's try to get rid of it and move the recommendation &lt;br /&gt;
//Risk? Isn't this circular? I don't understand the principle here.&lt;br /&gt;
&lt;br /&gt;
** Input Validation and Output Encoding&lt;br /&gt;
**Vet the security/authenticity of any third party code/libraries used in your mobile application ( reliable source, supported, no backend Trojans, licensing)&lt;br /&gt;
&lt;br /&gt;
**Code signing for some mobile platforms implies inherent trust between applications (with same code signatures), installed on the same mobile device. Plan code signing mechanisms properly. //Needs elaboration. (Vinay will expand it)&lt;br /&gt;
**Leverage static and binary code analyzers to find security flaws.&lt;br /&gt;
**Use safe string function, avoid buffer and Integer overflow //Is this mobile specific? (generic but important)&lt;br /&gt;
**Context aware security: may be able to decrease/increase access based on the context (e.g. location, network) - //Enterprise Apps (type of wifi, vpn, trused)&lt;br /&gt;
**For applications using JNI (Android) using a third party validation to ensure no vulnerabilities.&lt;br /&gt;
**Remove all test code before releasing the application&lt;br /&gt;
**Ensure logging is done appropriately in the released application. No excessive logging, no sensitive user information in log files - &lt;br /&gt;
//What sort of information should be recorded in the logs. (Keep audit data on the server, no user specific data - link to the Apple Issue - Signed Timestamps) //Vinay to add&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Candidates (to be merged if needed) ===&lt;br /&gt;
&lt;br /&gt;
'''11. No secrets in code/binary'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Mobile application binaries can be easily reverse engineered.&lt;br /&gt;
&lt;br /&gt;
** Do not store any passwords or secrets in the application binary &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''12. Protect your application from other malicious applications on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': User's are prone to install applications that look cool (may be malicious) and can transmit data about user (or stored data) for malicious purpose.&lt;br /&gt;
&lt;br /&gt;
**(?? What guidelines could be provided to developers)&lt;br /&gt;
**User education on using due diligence while installing third party applications on mobile devices &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Original list (kept for review) ===&lt;br /&gt;
# Protect data at rest&lt;br /&gt;
# Protect data in transport&lt;br /&gt;
# Multi-factor authentication&lt;br /&gt;
# Session management&lt;br /&gt;
# Least privilege access control&lt;br /&gt;
# Untrusted data validation&lt;br /&gt;
# Output encoding&lt;br /&gt;
# Enterprise device management&lt;br /&gt;
# Keep business logic on the server&lt;br /&gt;
# Platform security&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111358</id>
		<title>Projects/OWASP Mobile Security Project - Top Ten Mobile Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111358"/>
				<updated>2011-06-01T12:31:15Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Top 10 mobile controls and design principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Top 10 mobile controls and design principles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Identify and protect sensitive data on the mobile device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Unsafe sensitive data storage, attacks on decommissioned phones unintentional disclosure:&lt;br /&gt;
Mobile devices (being mobile) have a higher risk of getting lost, stolen. And it is trivial to Jailbreak or root the device once someone has physical possession of the device. Adequate protection be built to minimize the loss of sensitive data on device.&lt;br /&gt;
&lt;br /&gt;
** In the design phase analyze what data is sensitive and needs to be protected and apply appropriate controls (user personal/privacy data, password credentials etc.).&lt;br /&gt;
** Store sensitive data on the server instead of client-end  device, if possible.&lt;br /&gt;
** Leverage the encryption and key-store mechanism provided by the mobile OS/hardware (e.g. SIM card) to secure sensitive data. In case no good key management is available on the client-end, storing keys on the server side could be considered.&lt;br /&gt;
** Do not store/cache sensitive data on removable media unless they are tamper-proof and password protected.&lt;br /&gt;
** Use only protected temp/cache directories (Do not store temp/cached data in a world readable directory) //define protected&lt;br /&gt;
** Automatically delete data which is no longer required from device &lt;br /&gt;
** Be aware of caches and temporary storage as a possible leakage channel&lt;br /&gt;
** Be aware of shared data storage (e.g. address book, media gallery) as a possible leakage channel.&lt;br /&gt;
** Managed devices should leverage remote wipe and kill switch to remove sensitive information from the device&lt;br /&gt;
** Schedule deletion according to time, rather than on a push-pop basis (to prevent e.g. data remaining in caches indefinitely)&lt;br /&gt;
** Use secure deletion procedures e.g. conforming to NIST 800-88 .&lt;br /&gt;
** Be careful when sharing cache data with other applications (check for covert channels leaking sensitive data)&lt;br /&gt;
** Carry out a specific check of all communication with web-server backends and other interfaces with trust boundaries - (e.g. is location or other information transferred within file metadata) &lt;br /&gt;
** Consider the security of the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
** Where possible classify data storage according to sensitivity and apply controls accordingly (e.g. passwords, contact data, location vs error logs).&lt;br /&gt;
** Apply the principle of minimal disclosure - only collect and disclose data which is required for the application (how to know what this is?)&lt;br /&gt;
** Use non-persistent identifiers which are not shared with other apps wherever possible - e.g. do not use the device ID number as an identifier unless there is a good reason to do so.&lt;br /&gt;
** Apply techniques for the detection of covert channels - e.g. covert flow trees to discover information which may flow through shared resources such as file systems, resource use etc...&lt;br /&gt;
** For cryptographic keys, implement key management best practice including exploiting SIM card capabilities where possible //todo research mor and hook to best practice.&lt;br /&gt;
&lt;br /&gt;
'''2. Handle password credentials securely  on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Spyware, Surveillance, Financial malware, UI impersonation&lt;br /&gt;
User's password credentials if stolen not only provides unauthorized access to the mobile backend service but potentially many other services/accounts used by the user. Since a majority of the users  reuse their passwords (http://www.pcworld.com/article/188763/too_many_people_reuse_logins_study_finds.html )&lt;br /&gt;
&lt;br /&gt;
**Instead of passwords consider using longer term authorization tokens that can be securely stored on the device . Encrypt the tokens while stored on the device and in transit. Tokens can be issued by the backend service after verifying the user credentials initially. And the tokens could be time bound to the specific service, minimizing the damage in loss scenarios. Consider using the latest versions of the authorization standards (such as OAuth 2.0).&lt;br /&gt;
**In case passwords need to be stored on the device leverage the encryption and key-store mechanism provided by the mobile OS/hardware to securely store password credentials&lt;br /&gt;
**Provide mechanisms to the mobile user to change/remove passwords on the device (renew tokens)&lt;br /&gt;
**Password credentials should be marked to avoid being copied to backups&lt;br /&gt;
** Access to highly sensitive data (e.g. access to wallet) should be protected by a PIN.&lt;br /&gt;
** Consider using visual/pattern based passwords to aid usability.&lt;br /&gt;
**Ensure passwords and keys are not visible in cache or logs&lt;br /&gt;
**We recommend that one-time codes or any kind of password (OTP) should not be forwarded via SMS where (as on most smartphones) an alternative, more secure channel is available. Consider using HTTPS with client authentication (see 3.) to prevent Zeus-in-the-mobile style attacks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Ensure sensitive data is protected in transit''' &lt;br /&gt;
&lt;br /&gt;
'''Risks''': Network spoofing attacks, Surveillance&lt;br /&gt;
Majority of the smartphones are capable of using multiple transport carriers including Wifi, provider network(3G, GSM,..), bluetooth. Sensitive data passing through insecure channels could be intercepted.&lt;br /&gt;
&lt;br /&gt;
**Protecting Data in transit (assume the worst case, user sitting in a public unprotected wifi )&lt;br /&gt;
**Applications should enforce the use of the end-end secure channel (such as SSL/TLS) when sending sensitive information on wire/air. (Do not assume transport encryption)&lt;br /&gt;
**For sensitive data, to reduce the risk of man-in-middle (like SSL proxy), secure connection should only be established  after verifying the credentials of remote end-point (server). This can be achieved by ensuring that SSL is only established with the end points having the trusted certificates in key chain.&lt;br /&gt;
** Do not disable or ignore the SSL chain validation.  &lt;br /&gt;
** SMS, MMS or notifications should not be used to send sensitive data to mobile end points.&lt;br /&gt;
** For one-time-password values, rather than SMS, consider using https with client authentication (i.e. OTP is sent to smartphone over https and smartphone is authenticated to prevent interception).&lt;br /&gt;
** Consider use of GSM encryption-on flags to verify that GSM encryption is on.&lt;br /&gt;
** Provide appropriate trust cues for linking to unknown third party applications.&lt;br /&gt;
** Do not train users to follow untrusted paths (e.g. accept invalid certificates).&lt;br /&gt;
** Provide a reporting channel for phishing from apps (e.g. if you are a browser plugin developer). &lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google vulnerability of Client Login account credentials on unprotected wifi [http://www.uni-ulm.de/in/mi/mitarbeiter/koenings/catching-authtokens.html]&lt;br /&gt;
&lt;br /&gt;
'''4. Keep the back-end API and mobile platform secure'''&lt;br /&gt;
//Downgrade this control&lt;br /&gt;
'''Risks''': Attacks on back-ends through mobile device, loss of data via cloud storage. Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. Insecure implementation of backend APIs or services, and not keeping the back-end platform hardened/patched will allow bad guys to directly attack/compromise the back-ends.&lt;br /&gt;
&lt;br /&gt;
**Web Services/ SOAP/ REST , security best practices (placeholder)&lt;br /&gt;
** Input validation&lt;br /&gt;
** Do not use a generic  shared secret for integration to backend (like embedded password in code)&lt;br /&gt;
**Use authentication that ties back to the end user identity (rather than the device identity)&lt;br /&gt;
**Ensure authorization controls are done correctly in the backend APIs.&lt;br /&gt;
**Ensure that the backend platform is running on a hardened configuration with latest security patches&lt;br /&gt;
**Employ rate limiting and throttling, test for DDoS vulnerabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5. Implement user authentication/authorization and session management  correctly'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': &lt;br /&gt;
Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. It is important to ensure that the session management is done correctly after the initial authentication.&lt;br /&gt;
&lt;br /&gt;
**User authentication must be based on user's credentials. //??&lt;br /&gt;
**Use unpredictable session identifier with high entropy&lt;br /&gt;
**Do not use device id (UDID or IMEI) as a session identifier. Device Id is easy to spoof and potentially leaks private information when linked to other data.&lt;br /&gt;
**Session tokens can be cached using the operating system features to encrypt while in storage on device (e.g. Keychains).  //This sentence not clear&lt;br /&gt;
** Device cert can be used for stronger device identity. // How to make sure that this does not provide linkability between transactions (i.e. using the same cert across different service providers leaks data). I guess zero-knowledge certificates are too far-out for this guidance? Is this a common feature - device-cert - I have not come across it...&lt;br /&gt;
** Implement best practices for dormancy (3GPP), caching etc... to minimise signalling load on base stations.&lt;br /&gt;
** Warn user and obtain consent for any cost implications for app behaviour. // and other consent best practices.&lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google's ClientLogin implementation [http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html]&lt;br /&gt;
&lt;br /&gt;
'''6. Ensure strong vulnerability and patch management in place'''&lt;br /&gt;
//Downgrade and mix with #4&lt;br /&gt;
**All the back-end APIs (WebServices/REST) for mobile apps must be tested for vulnerabilities periodically.&lt;br /&gt;
** Developers should use static code analyzer tools and fuzzing tools for testing and finding security flaws.&lt;br /&gt;
**Applications must be designed and provisioned to allow updates for security patches, taking into account the requirements for approval by app-stores and the extra delay this may imply.&lt;br /&gt;
** Understand and test your patching process and its the interaction with the app-store - what is a typical time-frame are any updates possible (e.g. config files) without the approval of the app-store?&lt;br /&gt;
**Application team is responsible for tracking all third party frameworks/APIs used in the mobile application for security patches. A corresponding security update must be done for the mobile application using these third party APIs/frameworks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''7. Perform data integration with third party backend applications correctly'''&lt;br /&gt;
Risks: Unintended disclosure&lt;br /&gt;
** User informed if any personal data is collected or sent //This needs to be detailed - how to inform - one-time, on install, depending on the type of data etc...?&lt;br /&gt;
**No sensitive or user personal data is sent or shared with a third party/social site without prior approval and knowledge of the user. Link to 1. audit communication mechanisms to check for unintended leaks (e.g. image metadata). // ditto&lt;br /&gt;
**Validate all data received from the non-trusted third party before processing in the application. //What should be validated. Is this mobile-speciifc?&lt;br /&gt;
** Do not send data which is not required for the functioning of the application unless you have obtained the explicit consent of the user.&lt;br /&gt;
&lt;br /&gt;
'''8. Run the mobile client using minimal permission''' &lt;br /&gt;
Risks: Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
&lt;br /&gt;
**Run with the minimum privilege required for the application on the operating system. &lt;br /&gt;
**Don't authorize code/app to execute with root/sa privilege&lt;br /&gt;
**Always perform testing as a standard user (rather than a privileged user)&lt;br /&gt;
**Least privilege. Be aware of privileges granted by default by API's and disable them.&lt;br /&gt;
**Avoid opening application specific server sockets (listener ports) on the client device. Use the communication mechanisms provided by the OS. &lt;br /&gt;
&lt;br /&gt;
'''9. Enforce higher  security posture on the device for sensitive apps''' &lt;br /&gt;
//Reword May need to go in a separate enterprise security management point&lt;br /&gt;
**If a sensitive application needs to be provisioned on a device, application can employ enforcement of the  certain security posture on the device (such as PIN, remote management/wipe) // Still needs to be clarified&lt;br /&gt;
** Enterprise applications can employ this principle of doing a security posture check before deployment of sensitive applications&lt;br /&gt;
** Banking Apps &lt;br /&gt;
//(Remote Management, PIN enforcement, encryption, application monitoring)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10. Carefully check any runtime interpretation of code for errors''' &lt;br /&gt;
Runtime interpretation of code covers any opportunity an app gives for untrusted parties to provide unverified text or binary which is interpreted as code. For example, extra levels in a game, scripts, interpreted SMS headers. This gives an opportunity for malware to circumvent walled garden controls. &lt;br /&gt;
Risks: Injection attacks leading to Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
//Please check and add advice here.&lt;br /&gt;
** Note that it is not always obvious that your code is interpreting text. Look for any capabilities accessible via user-input data. &lt;br /&gt;
** Run interpreters at minimal privilege levels&lt;br /&gt;
** Fuzz test interpreters&lt;br /&gt;
** Define comprehensive and complete escape syntax (not sure if this is theortically possible).&lt;br /&gt;
** Follow security best practice for implementation of runtime interpreters (be careful when implementing anything which turns user input into executable code). //Hook... (Angry bird attack)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''11. Employ the secure coding/development practices'''&lt;br /&gt;
// Let's try to get rid of it and move the recommendation &lt;br /&gt;
//Risk? Isn't this circular? I don't understand the principle here.&lt;br /&gt;
&lt;br /&gt;
** Input Validation and Output Encoding&lt;br /&gt;
**Vet the security/authenticity of any third party code/libraries used in your mobile application ( reliable source, supported, no backend Trojans, licensing)&lt;br /&gt;
&lt;br /&gt;
**Code signing for some mobile platforms implies inherent trust between applications (with same code signatures), installed on the same mobile device. Plan code signing mechanisms properly. //Needs elaboration. (Vinay will expand it)&lt;br /&gt;
**Leverage static and binary code analyzers to find security flaws.&lt;br /&gt;
**Use safe string function, avoid buffer and Integer overflow //Is this mobile specific? (generic but important)&lt;br /&gt;
**Context aware security: may be able to decrease/increase access based on the context (e.g. location, network) - //Enterprise Apps (type of wifi, vpn, trused)&lt;br /&gt;
**For applications using JNI (Android) using a third party validation to ensure no vulnerabilities.&lt;br /&gt;
**Remove all test code before releasing the application&lt;br /&gt;
**Ensure logging is done appropriately in the released application. No excessive logging, no sensitive user information in log files - &lt;br /&gt;
//What sort of information should be recorded in the logs. (Keep audit data on the server, no user specific data - link to the Apple Issue - Signed Timestamps) //Vinay to add&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Candidates (to be merged if needed) ===&lt;br /&gt;
&lt;br /&gt;
'''11. No secrets in code/binary'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Mobile application binaries can be easily reverse engineered.&lt;br /&gt;
&lt;br /&gt;
** Do not store any passwords or secrets in the application binary &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''12. Protect your application from other malicious applications on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': User's are prone to install applications that look cool (may be malicious) and can transmit data about user (or stored data) for malicious purpose.&lt;br /&gt;
&lt;br /&gt;
**(?? What guidelines could be provided to developers)&lt;br /&gt;
**User education on using due diligence while installing third party applications on mobile devices &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Original list (kept for review) ===&lt;br /&gt;
# Protect data at rest&lt;br /&gt;
# Protect data in transport&lt;br /&gt;
# Multi-factor authentication&lt;br /&gt;
# Session management&lt;br /&gt;
# Least privilege access control&lt;br /&gt;
# Untrusted data validation&lt;br /&gt;
# Output encoding&lt;br /&gt;
# Enterprise device management&lt;br /&gt;
# Keep business logic on the server&lt;br /&gt;
# Platform security&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111357</id>
		<title>Projects/OWASP Mobile Security Project - Top Ten Mobile Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111357"/>
				<updated>2011-06-01T12:23:36Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Top 10 mobile controls and design principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Top 10 mobile controls and design principles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Identify and protect sensitive data on the mobile device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Unsafe sensitive data storage, attacks on decommissioned phones unintentional disclosure:&lt;br /&gt;
Mobile devices (being mobile) have a higher risk of getting lost, stolen. And it is trivial to Jailbreak or root the device once someone has physical possession of the device. Adequate protection be built to minimize the loss of sensitive data on device.&lt;br /&gt;
&lt;br /&gt;
** In the design phase analyze what data is sensitive and needs to be protected and apply appropriate controls (user personal/privacy data, password credentials etc.).&lt;br /&gt;
** Store sensitive data on the server instead of client-end  device, if possible.&lt;br /&gt;
** Leverage the encryption and key-store mechanism provided by the mobile OS/hardware (e.g. SIM card) to secure sensitive data. In case no good key management is available on the client-end, storing keys on the server side could be considered.&lt;br /&gt;
** Do not store/cache sensitive data on removable media unless they are tamper-proof and password protected.&lt;br /&gt;
** Use only protected temp/cache directories (Do not store temp/cached data in a world readable directory) //define protected&lt;br /&gt;
** Automatically delete data which is no longer required from device &lt;br /&gt;
** Be aware of caches and temporary storage as a possible leakage channel&lt;br /&gt;
** Be aware of shared data storage (e.g. address book, media gallery) as a possible leakage channel.&lt;br /&gt;
** Managed devices should leverage remote wipe and kill switch to remove sensitive information from the device&lt;br /&gt;
** Schedule deletion according to time, rather than on a push-pop basis (to prevent e.g. data remaining in caches indefinitely)&lt;br /&gt;
** Use secure deletion procedures e.g. conforming to NIST 800-88 .&lt;br /&gt;
** Be careful when sharing cache data with other applications (check for covert channels leaking sensitive data)&lt;br /&gt;
** Carry out a specific check of all communication with web-server backends and other interfaces with trust boundaries - (e.g. is location or other information transferred within file metadata) &lt;br /&gt;
** Consider the security of the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
** Where possible classify data storage according to sensitivity and apply controls accordingly (e.g. passwords, contact data, location vs error logs).&lt;br /&gt;
** Apply the principle of minimal disclosure - only collect and disclose data which is required for the application (how to know what this is?)&lt;br /&gt;
** Use non-persistent identifiers which are not shared with other apps wherever possible - e.g. do not use the device ID number as an identifier unless there is a good reason to do so.&lt;br /&gt;
** Apply techniques for the detection of covert channels - e.g. covert flow trees to discover information which may flow through shared resources such as file systems, resource use etc...&lt;br /&gt;
** For cryptographic keys, implement key management best practice including exploiting SIM card capabilities where possible //todo research mor and hook to best practice.&lt;br /&gt;
&lt;br /&gt;
'''2. Handle password credentials securely  on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Spyware, Surveillance, Financial malware, UI impersonation&lt;br /&gt;
User's password credentials if stolen not only provides unauthorized access to the mobile backend service but potentially many other services/accounts used by the user. Since a majority of the users  reuse their passwords (http://www.pcworld.com/article/188763/too_many_people_reuse_logins_study_finds.html )&lt;br /&gt;
&lt;br /&gt;
**Instead of passwords consider using longer term authorization tokens that can be securely stored on the device . Encrypt the tokens while stored on the device and in transit. Tokens can be issued by the backend service after verifying the user credentials initially. And the tokens could be time bound to the specific service, minimizing the damage in loss scenarios. Consider using the latest versions of the authorization standards (such as OAuth 2.0).&lt;br /&gt;
**In case passwords need to be stored on the device leverage the encryption and key-store mechanism provided by the mobile OS/hardware to securely store password credentials&lt;br /&gt;
**Provide mechanisms to the mobile user to change/remove passwords on the device (renew tokens)&lt;br /&gt;
**Password credentials should be marked to avoid being copied to backups&lt;br /&gt;
** Access to highly sensitive data (e.g. access to wallet) should be protected by a PIN.&lt;br /&gt;
** Consider using visual/pattern based passwords to aid usability.&lt;br /&gt;
**Ensure passwords and keys are not visible in cache or logs&lt;br /&gt;
**We recommend that one-time codes or any kind of password (OTP) should not be forwarded via SMS where (as on most smartphones) an alternative, more secure channel is available. Consider using HTTPS with client authentication (see 3.) to prevent Zeus-in-the-mobile style attacks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Ensure sensitive data is protected in transit''' &lt;br /&gt;
&lt;br /&gt;
'''Risks''': Network spoofing attacks, Surveillance&lt;br /&gt;
Majority of the smartphones are capable of using multiple transport carriers including Wifi, provider network(3G, GSM,..), bluetooth. Sensitive data passing through insecure channels could be intercepted.&lt;br /&gt;
&lt;br /&gt;
**Protecting Data in transit (assume the worst case, user sitting in a public unprotected wifi )&lt;br /&gt;
**Applications should enforce the use of the end-end secure channel (such as SSL/TLS) when sending sensitive information on wire/air. (Do not assume transport encryption)&lt;br /&gt;
**For sensitive data, to reduce the risk of man-in-middle (like SSL proxy), secure connection should only be established  after verifying the credentials of remote end-point (server). This can be achieved by ensuring that SSL is only established with the end points having the trusted certificates in key chain.&lt;br /&gt;
** Do not disable or ignore the SSL chain validation.  &lt;br /&gt;
** SMS, MMS or notifications should not be used to send sensitive data to mobile end points.&lt;br /&gt;
** For one-time-password values, rather than SMS, consider using https with client authentication (i.e. OTP is sent to smartphone over https and smartphone is authenticated to prevent interception).&lt;br /&gt;
** Consider use of GSM encryption-on flags to verify that GSM encryption is on.&lt;br /&gt;
** Provide appropriate trust cues for linking to unknown third party applications.&lt;br /&gt;
** Do not train users to follow untrusted paths (e.g. accept invalid certificates).&lt;br /&gt;
** Provide a reporting channel for phishing from apps (e.g. if you are a browser plugin developer). &lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google vulnerability of Client Login account credentials on unprotected wifi [http://www.uni-ulm.de/in/mi/mitarbeiter/koenings/catching-authtokens.html]&lt;br /&gt;
&lt;br /&gt;
'''4. Keep the back-end API and mobile platform secure'''&lt;br /&gt;
//Downgrade this control&lt;br /&gt;
'''Risks''': Attacks on back-ends through mobile device, loss of data via cloud storage. Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. Insecure implementation of backend APIs or services, and not keeping the back-end platform hardened/patched will allow bad guys to directly attack/compromise the back-ends.&lt;br /&gt;
&lt;br /&gt;
**Web Services/ SOAP/ REST , security best practices (placeholder)&lt;br /&gt;
** Input validation&lt;br /&gt;
** Do not use a generic  shared secret for integration to backend (like embedded password in code)&lt;br /&gt;
**Use authentication that ties back to the end user identity (rather than the device identity)&lt;br /&gt;
**Ensure authorization controls are done correctly in the backend APIs.&lt;br /&gt;
**Ensure that the backend platform is running on a hardened configuration with latest security patches&lt;br /&gt;
**Employ rate limiting and throttling, test for DDoS vulnerabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5. Implement user authentication/authorization and session management  correctly'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': &lt;br /&gt;
Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. It is important to ensure that the session management is done correctly after the initial authentication.&lt;br /&gt;
&lt;br /&gt;
**User authentication must be based on user's credentials. //??&lt;br /&gt;
**Use unpredictable session identifier with high entropy&lt;br /&gt;
**Do not use device id (UDID or IMEI) as a session identifier. Device Id is easy to spoof and potentially leaks private information when linked to other data.&lt;br /&gt;
**Session tokens can be cached using the operating system features to encrypt while in storage on device (e.g. Keychains).  //This sentence not clear&lt;br /&gt;
** Device cert can be used for stronger device identity. // How to make sure that this does not provide linkability between transactions (i.e. using the same cert across different service providers leaks data). I guess zero-knowledge certificates are too far-out for this guidance? Is this a common feature - device-cert - I have not come across it...&lt;br /&gt;
** Implement best practices for dormancy (3GPP), caching etc... to minimise signalling load on base stations.&lt;br /&gt;
** Warn user and obtain consent for any cost implications for app behaviour. // and other consent best practices.&lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google's ClientLogin implementation [http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html]&lt;br /&gt;
&lt;br /&gt;
'''6. Ensure strong vulnerability and patch management in place'''&lt;br /&gt;
//Downgrade and mix with #4&lt;br /&gt;
**All the back-end APIs (WebServices/REST) for mobile apps must be tested for vulnerabilities periodically.&lt;br /&gt;
** Developers should use static code analyzer tools and fuzzing tools for testing and finding security flaws.&lt;br /&gt;
**Applications must be designed and provisioned to allow updates for security patches, taking into account the requirements for approval by app-stores and the extra delay this may imply.&lt;br /&gt;
** Understand and test your patching process and its the interaction with the app-store - what is a typical time-frame are any updates possible (e.g. config files) without the approval of the app-store?&lt;br /&gt;
**Application team is responsible for tracking all third party frameworks/APIs used in the mobile application for security patches. A corresponding security update must be done for the mobile application using these third party APIs/frameworks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''7. Perform data integration with third party backend applications correctly'''&lt;br /&gt;
Risks: Unintended disclosure&lt;br /&gt;
** User informed if any personal data is collected or sent //This needs to be detailed - how to inform - one-time, on install, depending on the type of data etc...?&lt;br /&gt;
**No sensitive or user personal data is sent or shared with a third party/social site without prior approval and knowledge of the user. Link to 1. audit communication mechanisms to check for unintended leaks (e.g. image metadata). // ditto&lt;br /&gt;
**Validate all data received from the non-trusted third party before processing in the application. //What should be validated. Is this mobile-speciifc?&lt;br /&gt;
** Do not send data which is not required for the functioning of the application unless you have obtained the explicit consent of the user.&lt;br /&gt;
&lt;br /&gt;
'''8. Run the mobile client using minimal permission''' &lt;br /&gt;
Risks: Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
&lt;br /&gt;
**Run with the minimum privilege required for the application on the operating system. &lt;br /&gt;
**Don't authorize code/app to execute with root/sa privilege&lt;br /&gt;
**Always perform testing as a standard user (rather than a privileged user)&lt;br /&gt;
**Least privilege. Be aware of privileges granted by default by API's and disable them.&lt;br /&gt;
**Avoid opening application specific server sockets (listener ports) on the client device. Use the communication mechanisms provided by the OS. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''9. Enforce higher  security posture on the device for sensitive apps''' &lt;br /&gt;
//Reword&lt;br /&gt;
**If a sensitive application needs to be provisioned on a device, application can employ enforcement of the  certain security posture on the device (such as PIN, remote management/wipe) // Still needs to be clarified&lt;br /&gt;
** Enterprise applications can employ this principle of doing a security posture check before deployment of sensitive enterprise applications&lt;br /&gt;
&lt;br /&gt;
'''10. Carefully check any runtime interpretation of code for errors''' &lt;br /&gt;
Runtime interpretation of code covers any opportunity an app gives for untrusted parties to provide unverified text or binary which is interpreted as code. For example, extra levels in a game, scripts, interpreted SMS headers. This gives an opportunity for malware to circumvent walled garden controls. &lt;br /&gt;
Risks: Injection attacks leading to Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
//Please check and add advice here.&lt;br /&gt;
** Note that it is not always obvious that your code is interpreting text. Look for any capabilities accessible via user-input data. &lt;br /&gt;
** Run interpreters at minimal privilege levels&lt;br /&gt;
** Fuzz test interpreters&lt;br /&gt;
** Define comprehensive and complete escape syntax (not sure if this is theortically possible).&lt;br /&gt;
&lt;br /&gt;
'''11. Employ the secure coding/development practices'''&lt;br /&gt;
// Let's try to get rid of it and move the recommendation &lt;br /&gt;
//Risk? Isn't this circular? I don't understand the principle here.&lt;br /&gt;
&lt;br /&gt;
** Input Validation and Output Encoding&lt;br /&gt;
**Vet the security/authenticity of any third party code/libraries used in your mobile application ( reliable source, supported, no backend Trojans, licensing)&lt;br /&gt;
&lt;br /&gt;
**Code signing for some mobile platforms implies inherent trust between applications (with same code signatures), installed on the same mobile device. Plan code signing mechanisms properly. //Needs elaboration. (Vinay will expand it)&lt;br /&gt;
**Leverage static and binary code analyzers to find security flaws.&lt;br /&gt;
**Use safe string function, avoid buffer and Integer overflow //Is this mobile specific? (generic but important)&lt;br /&gt;
**Context aware security: may be able to decrease/increase access based on the context (e.g. location, network) - //Enterprise Apps (type of wifi, vpn, trused)&lt;br /&gt;
**For applications using JNI (Android) using a third party validation to ensure no vulnerabilities.&lt;br /&gt;
**Remove all test code before releasing the application&lt;br /&gt;
**Ensure logging is done appropriately in the released application. No excessive logging, no sensitive user information in log files - &lt;br /&gt;
//What sort of information should be recorded in the logs. (Keep audit data on the server, no user specific data - link to the Apple Issue - Signed Timestamps) //Vinay to add&lt;br /&gt;
** Follow security best practice for implementation of runtime interpreters (be careful when implementing anything which turns user input into executable code). //Hook...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Candidates (to be merged if needed) ===&lt;br /&gt;
&lt;br /&gt;
'''11. No secrets in code/binary'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Mobile application binaries can be easily reverse engineered.&lt;br /&gt;
&lt;br /&gt;
** Do not store any passwords or secrets in the application binary &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''12. Protect your application from other malicious applications on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': User's are prone to install applications that look cool (may be malicious) and can transmit data about user (or stored data) for malicious purpose.&lt;br /&gt;
&lt;br /&gt;
**(?? What guidelines could be provided to developers)&lt;br /&gt;
**User education on using due diligence while installing third party applications on mobile devices &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Original list (kept for review) ===&lt;br /&gt;
# Protect data at rest&lt;br /&gt;
# Protect data in transport&lt;br /&gt;
# Multi-factor authentication&lt;br /&gt;
# Session management&lt;br /&gt;
# Least privilege access control&lt;br /&gt;
# Untrusted data validation&lt;br /&gt;
# Output encoding&lt;br /&gt;
# Enterprise device management&lt;br /&gt;
# Keep business logic on the server&lt;br /&gt;
# Platform security&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111071</id>
		<title>Projects/OWASP Mobile Security Project - Top Ten Mobile Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111071"/>
				<updated>2011-05-25T13:06:07Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Top 10 mobile controls and design principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Top 10 mobile controls and design principles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Identify and protect sensitive data on the mobile device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Unsafe sensitive data storage, attacks on decommissioned phones unintentional disclosure:&lt;br /&gt;
Mobile devices (being mobile) have a higher risk of getting lost, stolen. And it is trivial to Jailbreak or root the device once someone has physical possession of the device. Adequate protection be built to minimize the loss of sensitive data on device.&lt;br /&gt;
&lt;br /&gt;
** In the design phase analyze what data is sensitive and needs to be protected and apply appropriate controls (user personal/privacy data, password credentials etc.).&lt;br /&gt;
** Store sensitive data on the server instead of client-end  device, if possible.&lt;br /&gt;
** Leverage the encryption and key-store mechanism provided by the mobile OS/hardware to secure sensitive data. In case no good key management is available on the client-end, storing keys on the server side could be considered.&lt;br /&gt;
** Do not store/cache sensitive data on the removable media&lt;br /&gt;
** Use only protected temp/cache directories (Do not store temp/cached data in a world readable directory)&lt;br /&gt;
** Automatically delete data from device which is no longer required &lt;br /&gt;
** Be aware of caches and temporary storage as a possible leakage channel&lt;br /&gt;
** Managed devices should leverage remote wipe and kill switch to remove sensitive information from the device&lt;br /&gt;
** Schedule deletion according to time, rather than on a push-pop basis.&lt;br /&gt;
** Use secure deletion procedures.&lt;br /&gt;
** Be careful when sharing cache data with other applications (check for covert channels leaking sensitive data)&lt;br /&gt;
** Consider the security of the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
** Where possible classify data storage according to sensitivity and apply controls accordingly (e.g. passwords, contact data, location vs error logs).&lt;br /&gt;
** Apply the principle of minimal disclosure - only collect and disclose data which is required for the application (how to know what this is?)&lt;br /&gt;
** Use non-persistent identifiers which are not shared with other apps wherever possible - e.g. do not use the device ID number as an identifier unless there is a good reason to do so.&lt;br /&gt;
** Apply techniques for the detection of covert channels - e.g. covert flow trees to discover information which may flow through shared resources such as file systems, resource use etc...&lt;br /&gt;
** Carefully control what data which is stored in public stores such as address book, media gallery etc... including metadata. &lt;br /&gt;
** Consider using SIM card as default storage for small but sensitive data such as keys. //To be researched more&lt;br /&gt;
** For cryptographic keys, implement key management best practice including exploiting SIM card capabilities where possible //hook to best practice.&lt;br /&gt;
&lt;br /&gt;
'''2. Handle password credentials securely  on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Spyware, Surveillance, Financial malware, UI impersonation&lt;br /&gt;
User's password credentials if stolen not only provides unauthorized access to the mobile backend service but potentially many other services/accounts used by the user. Since a majority of the users  reuse their passwords (http://www.pcworld.com/article/188763/too_many_people_reuse_logins_study_finds.html )&lt;br /&gt;
&lt;br /&gt;
**Instead of passwords consider using longer term authorization tokens that can be securely stored on the device . Encrypt the tokens while stored on the device and in transit. Tokens can be issued by the backend service after verifying the user credentials initially. And the tokens could be time bound to the specific service, minimizing the damage in loss scenarios. Consider using the latest versions of the authorization standards (such as OAuth 2.0).&lt;br /&gt;
**In case passwords need to stored on the device leverage the encryption and key-store mechanism provided by the mobile OS/hardware to securely store password credentials&lt;br /&gt;
**Provide mechanisms to the mobile user to change/remove passwords on the device (renew tokens)&lt;br /&gt;
**Password credentials should be marked to avoid being copied to backups &lt;br /&gt;
**Ensure passwords and keys are not visible in cache or logs&lt;br /&gt;
**We recommend that one-time codes (OTP) should not be forwarded via SMS. Consider using HTTPS and protect it on the device (Zitmo)... //or can we make a better rec on this?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Ensure sensitive data is protected in transit''' &lt;br /&gt;
&lt;br /&gt;
'''Risks''': Network spoofing attacks, Surveillance&lt;br /&gt;
Majority of the smartphones are capable of using multiple transport carriers including Wifi, provider network(3G, GSM,..), bluetooth. Sensitive data passing through insecure channels could be intercepted.&lt;br /&gt;
&lt;br /&gt;
**Protecting Data in transit (assume the worst case, user sitting in a public unprotected wifi )&lt;br /&gt;
**Applications should enforce the use of the end-end secure channel (such as SSL/TLS) when sending sensitive information on wire/air. (Do not assume transport encryption)&lt;br /&gt;
**For sensitive data, to reduce the risk of man-in-middle (like SSL proxy), secure connection should only be established  after verifying the credentials of remote end-point (server). This can be achieved by ensuring that SSL is only established with the end points having the trusted certificates in key chain. //This carries a high usability cost as advice...&lt;br /&gt;
** Do not disable or ignore the SSL chain validation.  &lt;br /&gt;
** SMS, MMS or notifications should not be used to send sensitive data to mobile end points // What about banking OTP's?&lt;br /&gt;
** Consider use of GSM encryption-on flags to verify that GSM encryption is on.&lt;br /&gt;
** Provide appropriate trust cues for linking to unknown third party applications.&lt;br /&gt;
** Do not train users to follow untrusted paths (e.g. accept invalid certificates).&lt;br /&gt;
** Provide a reporting channel for phishing from apps (e.g. if you are a browser plugin developer). &lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google vulnerability of Client Login account credentials on unprotected wifi [http://www.uni-ulm.de/in/mi/mitarbeiter/koenings/catching-authtokens.html]&lt;br /&gt;
&lt;br /&gt;
'''4. Keep the back-end API and mobile platform secure'''&lt;br /&gt;
//Downgrade this control&lt;br /&gt;
'''Risks''': Attacks on back-ends through mobile device, loss of data via cloud storage. Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. Insecure implementation of backend APIs or services, and not keeping the back-end platform hardened/patched will allow bad guys to directly attack/compromise the back-ends.&lt;br /&gt;
&lt;br /&gt;
**Web Services/ SOAP/ REST , security best practices (placeholder)&lt;br /&gt;
** Input validation&lt;br /&gt;
** Do not use a generic  shared secret for integration to backend (like embedded password in code)&lt;br /&gt;
**Use authentication that ties back to the end user identity (rather than the device identity)&lt;br /&gt;
**Ensure authorization controls are done correctly in the backend APIs.&lt;br /&gt;
**Ensure that the backend platform is running on a hardened configuration with latest security patches&lt;br /&gt;
**Employ rate limiting and throttling, test for DDoS vulnerabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5. Implement user authentication/authorization and session management  correctly'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': &lt;br /&gt;
Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. It is important to ensure that the session management is done correctly after the initial authentication.&lt;br /&gt;
&lt;br /&gt;
**User authentication must be based on user's credentials.&lt;br /&gt;
**Use unpredictable session identifier with high entropy&lt;br /&gt;
**Do not use device id (UDID or IMEI) as the only session identifier. Device Id is easy to spoof and potentially leaks private information when linked to other data.  (Device Id could in some cases be used as an additional check that the request is originating from the known device) // Giles:I would NOT make the last recommendation because Device ID can be used for cross-site tracking since it is shared between apps.&lt;br /&gt;
**Session tokens can be cached using the operating system features to encrypt while in storage on device (e.g. Keychains). &lt;br /&gt;
** Device cert can be used for stronger device identity&lt;br /&gt;
** Implement best practices for dormancy (3GPP), caching etc... to minimise signalling load on base stations.&lt;br /&gt;
** Warn user and obtain consent for any cost implications for app behaviour.&lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google's ClientLogin implementation [http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html]&lt;br /&gt;
&lt;br /&gt;
'''6. Ensure strong vulnerability and patch management in place'''&lt;br /&gt;
//Downgrade and mix with #4&lt;br /&gt;
**All the back-end APIs (WebServices/REST) for mobile apps must be tested for vulnerabilities periodically.&lt;br /&gt;
** Developers should use static code analyzer tools and fuzzing tools for testing and finding security flaws.&lt;br /&gt;
**Applications must be designed and provisioned to allow updates for security patches, taking into account the requirements for approval by app-stores.&lt;br /&gt;
**Application team is responsible for tracking all third party frameworks/APIs used in the mobile application for security patches. A corresponding security update must be done for the mobile application using these third party APIs/frameworks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''7. Employ the secure coding/development practices'''&lt;br /&gt;
// Let's try to get rid of it and move the recommendation &lt;br /&gt;
//Risk? Isn't this circular? I don't understand the principle here.&lt;br /&gt;
&lt;br /&gt;
** Input Validation and Output Encoding&lt;br /&gt;
**Vet the security/authenticity of any third party code/libraries used in your mobile application ( reliable source, supported, no backend Trojans, licensing)&lt;br /&gt;
**Avoid opening application specific server sockets (listener ports) on the client device. Use the communication mechanisms provided by the OS. &lt;br /&gt;
//(Add least privilege)&lt;br /&gt;
**Code signing for some mobile platforms implies inherent trust between applications (with same code signatures), installed on the same mobile device. Plan code signing mechanisms properly. //Needs elaboration.&lt;br /&gt;
**Leverage static and binary code analyzers to find security flaws.&lt;br /&gt;
**Use safe string function, avoid buffer and Integer overflow //Is this mobile specific?&lt;br /&gt;
**Context aware security: may be able to decrease/increase access based on the context (e.g. location, network)&lt;br /&gt;
**For applications using JNI (Android) using a third party validation to ensure no vulnerabilities.&lt;br /&gt;
**Remove all test code before releasing the application&lt;br /&gt;
**Ensure logging is done appropriately in the released application. No excessive logging, no sensitive user information in log files&lt;br /&gt;
//What sort of information should be recorded in the logs.&lt;br /&gt;
** Follow security best practice for implementation of runtime interpreters (be careful when implementing anything which turns user input into executable code). //Hook...&lt;br /&gt;
&lt;br /&gt;
'''8. Perform data integration with third party backend applications correctly'''&lt;br /&gt;
Risks: Unintended disclosure&lt;br /&gt;
** User informed if any personal data is collected or sent //This needs to be detailed - how to inform - one-time, on install, depending on the type of data etc...?&lt;br /&gt;
**No sensitive or user personal data is sent or shared with a third party/social site without prior approval and knowledge of the user. // ditto&lt;br /&gt;
**Validate all data received from the non-trusted third party before processing in the application. //What should be validated. Is this mobile-speciifc?&lt;br /&gt;
** Do not send data which is not required for the functioning of the application unless you have obtained the explicit consent of the user.&lt;br /&gt;
&lt;br /&gt;
'''9. Run the mobile client using minimal permission''' &lt;br /&gt;
Risks: Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
&lt;br /&gt;
**Run with the minimum privilege required for the application on the operating system. &lt;br /&gt;
**Don't authorize code/app to execute with root privilege&lt;br /&gt;
**Always perform testing as a standard user (rather than a privileged user)&lt;br /&gt;
**Least privilege. Be aware of privileges granted by default by API's and disable them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10. Enforce higher  security posture on the device for sensitive apps''' &lt;br /&gt;
//Reword&lt;br /&gt;
**If a sensitive application needs to be provisioned on a device, application can employ enforcement of the  certain security posture on the device (such as PIN, remote management/wipe) // I don't follow this point.&lt;br /&gt;
** Enterprise applications can employ this principle of doing a security posture check before deployment of sensitive enterprise applications&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Candidates (to be merged if needed) ===&lt;br /&gt;
&lt;br /&gt;
'''11. No secrets in code/binary'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Mobile application binaries can be easily reverse engineered.&lt;br /&gt;
&lt;br /&gt;
** Do not store any passwords or secrets in the application binary &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''12. Protect your application from other malicious applications on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': User's are prone to install applications that look cool (may be malicious) and can transmit data about user (or stored data) for malicious purpose.&lt;br /&gt;
&lt;br /&gt;
**(?? What guidelines could be provided to developers)&lt;br /&gt;
**User education on using due diligence while installing third party applications on mobile devices &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//What about runtime interpreters - some guidelines on these?&lt;br /&gt;
&lt;br /&gt;
=== Original list (kept for review) ===&lt;br /&gt;
# Protect data at rest&lt;br /&gt;
# Protect data in transport&lt;br /&gt;
# Multi-factor authentication&lt;br /&gt;
# Session management&lt;br /&gt;
# Least privilege access control&lt;br /&gt;
# Untrusted data validation&lt;br /&gt;
# Output encoding&lt;br /&gt;
# Enterprise device management&lt;br /&gt;
# Keep business logic on the server&lt;br /&gt;
# Platform security&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111068</id>
		<title>Projects/OWASP Mobile Security Project - Top Ten Mobile Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111068"/>
				<updated>2011-05-25T12:56:57Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Top 10 mobile controls and design principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Top 10 mobile controls and design principles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Identify and protect sensitive data on the mobile device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Unsafe sensitive data storage, attacks on decommissioned phones unintentional disclosure:&lt;br /&gt;
Mobile devices (being mobile) have a higher risk of getting lost, stolen. And it is trivial to Jailbreak or root the device once someone has physical possession of the device. Adequate protection be built to minimize the loss of sensitive data on device.&lt;br /&gt;
&lt;br /&gt;
** In the design phase analyze what data is sensitive and needs to be protected and apply appropriate controls (user personal/privacy data, password credentials etc.).&lt;br /&gt;
** Store sensitive data on the server instead of client-end  device, if possible.&lt;br /&gt;
** Leverage the encryption and key-store mechanism provided by the mobile OS/hardware to secure sensitive data. In case no good key management is available on the client-end, storing keys on the server side could be considered.&lt;br /&gt;
** Do not store/cache sensitive data on the removable media&lt;br /&gt;
** Use only protected temp/cache directories (Do not store temp/cached data in a world readable directory)&lt;br /&gt;
** Automatically delete data from device which is no longer required &lt;br /&gt;
** Be aware of caches and temporary storage as a possible leakage channel&lt;br /&gt;
** Managed devices should leverage remote wipe and kill switch to remove sensitive information from the device&lt;br /&gt;
** Schedule deletion according to time, rather than on a push-pop basis.&lt;br /&gt;
** Use secure deletion procedures.&lt;br /&gt;
** Be careful when sharing cache data with other applications (check for covert channels leaking sensitive data)&lt;br /&gt;
** Consider the security of the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
** Where possible classify data storage according to sensitivity and apply controls accordingly (e.g. passwords, contact data, location vs error logs).&lt;br /&gt;
** Apply the principle of minimal disclosure - only collect and disclose data which is required for the application (how to know what this is?)&lt;br /&gt;
** Use non-persistent identifiers which are not shared with other apps wherever possible - e.g. do not use the device ID number as an identifier unless there is a good reason to do so.&lt;br /&gt;
** Apply techniques for the detection of covert channels - e.g. covert flow trees to discover information which may flow through shared resources such as file systems, resource use etc...&lt;br /&gt;
** Carefully control what data which is stored in public stores such as address book, media gallery etc... including metadata. &lt;br /&gt;
** Consider using SIM card as default storage for small but sensitive data such as keys. //To be researched more&lt;br /&gt;
** For cryptographic keys, implement key management best practice including exploiting SIM card capabilities where possible //hook to best practice.&lt;br /&gt;
&lt;br /&gt;
'''2. Handle password credentials securely  on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Spyware, Surveillance, Financial malware, UI impersonation&lt;br /&gt;
User's password credentials if stolen not only provides unauthorized access to the mobile backend service but potentially many other services/accounts used by the user. Since a majority of the users  reuse their passwords (http://www.pcworld.com/article/188763/too_many_people_reuse_logins_study_finds.html )&lt;br /&gt;
&lt;br /&gt;
**Instead of passwords consider using longer term authorization tokens that can be securely stored on the device . Encrypt the tokens while stored on the device and in transit. Tokens can be issued by the backend service after verifying the user credentials initially. And the tokens could be time bound to the specific service, minimizing the damage in loss scenarios. Consider using the latest versions of the authorization standards (such as OAuth 2.0).&lt;br /&gt;
**In case passwords need to stored on the device leverage the encryption and key-store mechanism provided by the mobile OS/hardware to securely store password credentials&lt;br /&gt;
**Provide mechanisms to the mobile user to change/remove passwords on the device (renew tokens)&lt;br /&gt;
**Password credentials should be marked to avoid being copied to backups &lt;br /&gt;
**Ensure passwords and keys are not visible in cache or logs&lt;br /&gt;
**We recommend that one-time codes (OTP) should not be forwarded via SMS. Consider using HTTPS and protect it on the device (Zitmo)... //or can we make a better rec on this?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Ensure sensitive data is protected in transit''' &lt;br /&gt;
&lt;br /&gt;
'''Risks''': Network spoofing attacks, Surveillance&lt;br /&gt;
Majority of the smartphones are capable of using multiple transport carriers including Wifi, provider network(3G, GSM,..), bluetooth. Sensitive data passing through insecure channels could be intercepted.&lt;br /&gt;
&lt;br /&gt;
**Protecting Data in transit (assume the worst case, user sitting in a public unprotected wifi )&lt;br /&gt;
**Applications should enforce the use of the end-end secure channel (such as SSL/TLS) when sending sensitive information on wire/air. (Do not assume transport encryption)&lt;br /&gt;
**For sensitive data, to reduce the risk of man-in-middle (like SSL proxy), secure connection should only be established  after verifying the credentials of remote end-point (server). This can be achieved by ensuring that SSL is only established with the end points having the trusted certificates in key chain. //This carries a high usability cost as advice...&lt;br /&gt;
** Do not disable or ignore the SSL chain validation.  &lt;br /&gt;
** SMS, MMS or notifications should not be used to send sensitive data to mobile end points // What about banking OTP's?&lt;br /&gt;
** Consider use of GSM encryption-on flags to verify that GSM encryption is on.&lt;br /&gt;
** Provide appropriate trust cues for linking to unknown third party applications.&lt;br /&gt;
** Do not train users to follow untrusted paths (e.g. accept invalid certificates).&lt;br /&gt;
** Provide a reporting channel for phishing from apps (e.g. if you are a browser plugin developer). &lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google vulnerability of Client Login account credentials on unprotected wifi [http://www.uni-ulm.de/in/mi/mitarbeiter/koenings/catching-authtokens.html]&lt;br /&gt;
&lt;br /&gt;
'''4. Keep the back-end API and mobile platform secure'''&lt;br /&gt;
//Downgrade this control&lt;br /&gt;
'''Risks''': Attacks on back-ends through mobile device, loss of data via cloud storage. Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. Insecure implementation of backend APIs or services, and not keeping the back-end platform hardened/patched will allow bad guys to directly attack/compromise the back-ends.&lt;br /&gt;
&lt;br /&gt;
**Web Services/ SOAP/ REST , security best practices (placeholder)&lt;br /&gt;
** Input validation&lt;br /&gt;
** Do not use a generic  shared secret for integration to backend (like embedded password in code)&lt;br /&gt;
**Use authentication that ties back to the end user identity (rather than the device identity)&lt;br /&gt;
**Ensure authorization controls are done correctly in the backend APIs.&lt;br /&gt;
**Ensure that the backend platform is running on a hardened configuration with latest security patches&lt;br /&gt;
**Employ rate limiting and throttling, test for DDoS vulnerabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5. Implement user authentication/authorization and session management  correctly'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': &lt;br /&gt;
Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. It is important to ensure that the session management is done correctly after the initial authentication.&lt;br /&gt;
&lt;br /&gt;
**User authentication must be based on user's credentials.&lt;br /&gt;
**Use unpredictable session identifier with high entropy&lt;br /&gt;
**Do not use device id (UDID or IMEI) as the only session identifier. Device Id is easy to spoof and potentially leaks private information when linked to other data.  (Device Id could in some cases be used as an additional check that the request is originating from the known device) // Giles:I would NOT make the last recommendation because Device ID can be used for cross-site tracking since it is shared between apps.&lt;br /&gt;
**Session tokens can be cached using the operating system features to encrypt while in storage on device (e.g. Keychains). &lt;br /&gt;
** Device cert can be used for stronger device identity&lt;br /&gt;
** Implement best practices for dormancy (3GPP), caching etc... to minimise signalling load on base stations.&lt;br /&gt;
** Warn user and obtain consent for any cost implications for app behaviour.&lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google's ClientLogin implementation [http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html]&lt;br /&gt;
&lt;br /&gt;
'''6. Ensure strong vulnerability and patch management in place'''&lt;br /&gt;
//Downgrade and mix with #4&lt;br /&gt;
**All the back-end APIs (WebServices/REST) for mobile apps must be tested for vulnerabilities periodically.&lt;br /&gt;
** Developers should use static code analyzer tools and fuzzing tools for testing and finding security flaws.&lt;br /&gt;
**Applications must be designed and provisioned to allow updates for security patches, taking into account the requirements for approval by app-stores.&lt;br /&gt;
**Application team is responsible for tracking all third party frameworks/APIs used in the mobile application for security patches. A corresponding security update must be done for the mobile application using these third party APIs/frameworks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''7. Employ the secure coding/development practices'''&lt;br /&gt;
// Let's try to get rid of it and move the recommendation &lt;br /&gt;
//Risk? Isn't this circular? I don't understand the principle here.&lt;br /&gt;
&lt;br /&gt;
** Input Validation and Output Encoding&lt;br /&gt;
**Vet the security/authenticity of any third party code/libraries used in your mobile application ( reliable source, supported, no backend Trojans, licensing)&lt;br /&gt;
**Avoid opening application specific server sockets (listener ports) on the client device. Use the communication mechanisms provided by the OS. &lt;br /&gt;
//(Add least privilege)&lt;br /&gt;
**Code signing for some mobile platforms implies inherent trust between applications (with same code signatures), installed on the same mobile device. Plan code signing mechanisms properly. //Needs elaboration.&lt;br /&gt;
**Leverage static and binary code analyzers to find security flaws.&lt;br /&gt;
**Use safe string function, avoid buffer and Integer overflow //Is this mobile specific?&lt;br /&gt;
**Context aware security: may be able to decrease/increase access based on the context (e.g. location, network)&lt;br /&gt;
**For applications using JNI (Android) using a third party validation to ensure no vulnerabilities.&lt;br /&gt;
**Remove all test code before releasing the application&lt;br /&gt;
**Ensure logging is done appropriately in the released application. No excessive logging, no sensitive user information in log files&lt;br /&gt;
//What sort of information should be recorded in the logs.&lt;br /&gt;
** Follow security best practice for implementation of runtime interpreters (be careful when implementing anything which turns user input into executable code). //Hook...&lt;br /&gt;
&lt;br /&gt;
'''8. Perform data integration with third party backend applications correctly'''&lt;br /&gt;
Risks: Unintended disclosure&lt;br /&gt;
** User informed if any personal data is collected or sent //This needs to be detailed - how to inform - one-time, on install, depending on the type of data etc...?&lt;br /&gt;
**No sensitive or user personal data is sent or shared with a third party/social site without prior approval and knowledge of the user. // ditto&lt;br /&gt;
**Validate all data received from the non-trusted third party before processing in the application. //What should be validated. Is this mobile-speciifc?&lt;br /&gt;
** Do not send data which is not required for the functioning of the application unless you have obtained the explicit consent of the user.&lt;br /&gt;
&lt;br /&gt;
'''9. Run the mobile client using minimal permission''' &lt;br /&gt;
Risks: Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
&lt;br /&gt;
**Run with the minimum privilege required for the application on the operating system. &lt;br /&gt;
**Don't authorize code/app to execute with root privilege&lt;br /&gt;
**Always perform testing as a standard user (rather than a privileged user)&lt;br /&gt;
**Least privilege. Be aware of privileges granted by default by API's and disable them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10. Enforce higher  security posture on the device for sensitive apps''' &lt;br /&gt;
&lt;br /&gt;
**If a sensitive application needs to be provisioned on a device, application can employ enforcement of the  certain security posture on the device (such as PIN, remote management/wipe) // I don't follow this point.&lt;br /&gt;
** Enterprise applications can employ this principle of doing a security posture check before deployment of sensitive enterprise applications&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Candidates (to be merged if needed) ===&lt;br /&gt;
&lt;br /&gt;
'''11. No secrets in code/binary'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Mobile application binaries can be easily reverse engineered.&lt;br /&gt;
&lt;br /&gt;
** Do not store any passwords or secrets in the application binary &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''12. Protect your application from other malicious applications on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': User's are prone to install applications that look cool (may be malicious) and can transmit data about user (or stored data) for malicious purpose.&lt;br /&gt;
&lt;br /&gt;
**(?? What guidelines could be provided to developers)&lt;br /&gt;
**User education on using due diligence while installing third party applications on mobile devices &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//What about runtime interpreters - some guidelines on these?&lt;br /&gt;
&lt;br /&gt;
=== Original list (kept for review) ===&lt;br /&gt;
# Protect data at rest&lt;br /&gt;
# Protect data in transport&lt;br /&gt;
# Multi-factor authentication&lt;br /&gt;
# Session management&lt;br /&gt;
# Least privilege access control&lt;br /&gt;
# Untrusted data validation&lt;br /&gt;
# Output encoding&lt;br /&gt;
# Enterprise device management&lt;br /&gt;
# Keep business logic on the server&lt;br /&gt;
# Platform security&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111065</id>
		<title>Projects/OWASP Mobile Security Project - Top Ten Mobile Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111065"/>
				<updated>2011-05-25T12:48:38Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Top 10 mobile controls and design principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Top 10 mobile controls and design principles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Identify and protect sensitive data on the mobile device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Unsafe sensitive data storage, attacks on decommissioned phones unintentional disclosure:&lt;br /&gt;
Mobile devices (being mobile) have a higher risk of getting lost, stolen. And it is trivial to Jailbreak or root the device once someone has physical possession of the device. Adequate protection be built to minimize the loss of sensitive data on device.&lt;br /&gt;
&lt;br /&gt;
** In the design phase analyze what data is sensitive and needs to be protected and apply appropriate controls (user personal/privacy data, password credentials etc.).&lt;br /&gt;
** Store sensitive data on the server instead of client-end  device, if possible.&lt;br /&gt;
** Leverage the encryption and key-store mechanism provided by the mobile OS/hardware to secure sensitive data. In case no good key management is available on the client-end, storing keys on the server side could be considered.&lt;br /&gt;
** Do not store/cache sensitive data on the removable media&lt;br /&gt;
** Use only protected temp/cache directories (Do not store temp/cached data in a world readable directory)&lt;br /&gt;
** Automatically delete data from device which is no longer required &lt;br /&gt;
** Be aware of caches and temporary storage as a possible leakage channel&lt;br /&gt;
** Managed devices should leverage remote wipe and kill switch to remove sensitive information from the device&lt;br /&gt;
** Schedule deletion according to time, rather than on a push-pop basis.&lt;br /&gt;
** Use secure deletion procedures.&lt;br /&gt;
** Be careful when sharing cache data with other applications (check for covert channels leaking sensitive data)&lt;br /&gt;
** Consider the security of the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
** Where possible classify data storage according to sensitivity and apply controls accordingly (e.g. passwords, contact data, location vs error logs).&lt;br /&gt;
** Apply the principle of minimal disclosure - only collect and disclose data which is required for the application (how to know what this is?)&lt;br /&gt;
** Use non-persistent identifiers which are not shared with other apps wherever possible - e.g. do not use the device ID number as an identifier unless there is a good reason to do so.&lt;br /&gt;
** Apply techniques for the detection of covert channels - e.g. covert flow trees to discover information which may flow through shared resources such as file systems, resource use etc...&lt;br /&gt;
** Carefully control what data which is stored in public stores such as address book, media gallery etc... including metadata. &lt;br /&gt;
** Consider using SIM card as default storage for small but sensitive data such as keys. //To be researched more&lt;br /&gt;
** For cryptographic keys, implement key management best practice including exploiting SIM card capabilities where possible //hook to best practice.&lt;br /&gt;
&lt;br /&gt;
'''2. Handle password credentials securely  on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Spyware, Surveillance, Financial malware, UI impersonation&lt;br /&gt;
User's password credentials if stolen not only provides unauthorized access to the mobile backend service but potentially many other services/accounts used by the user. Since a majority of the users  reuse their passwords (http://www.pcworld.com/article/188763/too_many_people_reuse_logins_study_finds.html )&lt;br /&gt;
&lt;br /&gt;
**Instead of passwords consider using longer term authorization tokens that can be securely stored on the device . Encrypt the tokens while stored on the device and in transit. Tokens can be issued by the backend service after verifying the user credentials initially. And the tokens could be time bound to the specific service, minimizing the damage in loss scenarios. Consider using the latest versions of the authorization standards (such as OAuth 2.0).&lt;br /&gt;
**In case passwords need to stored on the device leverage the encryption and key-store mechanism provided by the mobile OS/hardware to securely store password credentials&lt;br /&gt;
**Provide mechanisms to the mobile user to change/remove passwords on the device (renew tokens)&lt;br /&gt;
**Password credentials should be marked to avoid being copied to backups &lt;br /&gt;
**Ensure passwords and keys are not visible in cache or logs&lt;br /&gt;
**We recommend that one-time codes (OTP) should not be forwarded via SMS. Consider using HTTPS and protect it on the device (Zitmo)... //or can we make a better rec on this?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Ensure sensitive data is protected in transit''' &lt;br /&gt;
&lt;br /&gt;
'''Risks''': Network spoofing attacks, Surveillance&lt;br /&gt;
Majority of the smartphones are capable of using multiple transport carriers including Wifi, provider network(3G, GSM,..), bluetooth. Sensitive data passing through insecure channels could be intercepted.&lt;br /&gt;
&lt;br /&gt;
**Protecting Data in transit (assume the worst case, user sitting in a public unprotected wifi )&lt;br /&gt;
**Applications should enforce the use of the end-end secure channel (such as SSL/TLS) when sending sensitive information on wire/air. (Do not assume transport encryption)&lt;br /&gt;
**For sensitive data, to reduce the risk of man-in-middle (like SSL proxy), secure connection should only be established  after verifying the credentials of remote end-point (server). This can be achieved by ensuring that SSL is only established with the end points having the trusted certificates in key chain. //This carries a high usability cost as advice...&lt;br /&gt;
** Do not disable or ignore the SSL chain validation.  &lt;br /&gt;
** SMS, MMS or notifications should not be used to send sensitive data to mobile end points // What about banking OTP's?&lt;br /&gt;
** Consider use of GSM encryption-on flags to verify that GSM encryption is on.&lt;br /&gt;
** Provide appropriate trust cues for linking to unknown third party applications.&lt;br /&gt;
** Do not train users to follow untrusted paths (e.g. accept invalid certificates).&lt;br /&gt;
** Provide a reporting channel for phishing from apps (e.g. if you are a browser plugin developer). &lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google vulnerability of Client Login account credentials on unprotected wifi [http://www.uni-ulm.de/in/mi/mitarbeiter/koenings/catching-authtokens.html]&lt;br /&gt;
&lt;br /&gt;
'''4. Keep the back-end API and mobile platform secure'''&lt;br /&gt;
//Downgrade this control&lt;br /&gt;
'''Risks''': Attacks on back-ends through mobile device, loss of data via cloud storage. Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. Insecure implementation of backend APIs or services, and not keeping the back-end platform hardened/patched will allow bad guys to directly attack/compromise the back-ends.&lt;br /&gt;
&lt;br /&gt;
**Web Services/ SOAP/ REST , security best practices (placeholder)&lt;br /&gt;
** Input validation&lt;br /&gt;
** Do not use a generic  shared secret for integration to backend (like embedded password in code)&lt;br /&gt;
**Use authentication that ties back to the end user identity (rather than the device identity)&lt;br /&gt;
**Ensure authorization controls are done correctly in the backend APIs.&lt;br /&gt;
**Ensure that the backend platform is running on a hardened configuration with latest security patches&lt;br /&gt;
**Employ rate limiting and throttling, test for DDoS vulnerabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5. Implement user authentication/authorization and session management  correctly'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': &lt;br /&gt;
Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. It is important to ensure that the session management is done correctly after the initial authentication.&lt;br /&gt;
&lt;br /&gt;
**User authentication must be based on user's credentials.&lt;br /&gt;
**Use unpredictable session identifier with high entropy&lt;br /&gt;
**Do not use device id (UDID or IMEI) as the only session identifier. Device Id is easy to spoof and potentially leaks private information when linked to other data.  (Device Id could in some cases be used as an additional check that the request is originating from the known device) // Giles:I would NOT make the last recommendation because Device ID can be used for cross-site tracking since it is shared between apps.&lt;br /&gt;
**Session tokens can be cached using the operating system features to encrypt while in storage on device (e.g. Keychains). &lt;br /&gt;
** Device cert can be used for stronger device identity&lt;br /&gt;
** Implement best practices for dormancy (3GPP), caching etc... to minimise signalling load on base stations.&lt;br /&gt;
** Warn user and obtain consent for any cost implications for app behaviour.&lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google's ClientLogin implementation [http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html]&lt;br /&gt;
&lt;br /&gt;
'''6. Ensure strong vulnerability and patch management in place'''&lt;br /&gt;
&lt;br /&gt;
**All the back-end APIs (WebServices/REST) for mobile apps must be tested for vulnerabilities periodically.&lt;br /&gt;
** Developers should use static code analyzer tools and fuzzing tools for testing and finding security flaws.&lt;br /&gt;
**Applications must be designed and provisioned to allow updates for security patches, taking into account the requirements for approval by app-stores.&lt;br /&gt;
**Application team is responsible for tracking all third party frameworks/APIs used in the mobile application for security patches. A corresponding security update must be done for the mobile application using these third party APIs/frameworks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''7. Employ the secure coding/development practices'''&lt;br /&gt;
&lt;br /&gt;
//Risk? Isn't this circular? I don't understand the principle here.&lt;br /&gt;
&lt;br /&gt;
** Input Validation and Output Encoding&lt;br /&gt;
**Vet the security/authenticity of any third party code/libraries used in your mobile application ( reliable source, supported, no backend Trojans, licensing)&lt;br /&gt;
**Avoid opening application specific server sockets (listener ports) on the client device. Use the communication mechanisms provided by the OS. &lt;br /&gt;
//(Add least privilege)&lt;br /&gt;
**Code signing for some mobile platforms implies inherent trust between applications (with same code signatures), installed on the same mobile device. Plan code signing mechanisms properly. //Needs elaboration.&lt;br /&gt;
**Leverage static and binary code analyzers to find security flaws.&lt;br /&gt;
**Use safe string function, avoid buffer and Integer overflow //Is this mobile specific?&lt;br /&gt;
**Context aware security: may be able to decrease/increase access based on the context (e.g. location, network)&lt;br /&gt;
**For applications using JNI (Android) using a third party validation to ensure no vulnerabilities.&lt;br /&gt;
**Remove all test code before releasing the application&lt;br /&gt;
**Ensure logging is done appropriately in the released application. No excessive logging, no sensitive user information in log files&lt;br /&gt;
//What sort of information should be recorded in the logs.&lt;br /&gt;
** Follow security best practice for implementation of runtime interpreters (be careful when implementing anything which turns user input into executable code). //Hook...&lt;br /&gt;
&lt;br /&gt;
'''8. Perform data integration with third party backend applications correctly'''&lt;br /&gt;
Risks: Unintended disclosure&lt;br /&gt;
** User informed if any personal data is collected or sent //This needs to be detailed - how to inform - one-time, on install, depending on the type of data etc...?&lt;br /&gt;
**No sensitive or user personal data is sent or shared with a third party/social site without prior approval and knowledge of the user. // ditto&lt;br /&gt;
**Validate all data received from the non-trusted third party before processing in the application. //What should be validated. Is this mobile-speciifc?&lt;br /&gt;
** Do not send data which is not required for the functioning of the application unless you have obtained the explicit consent of the user.&lt;br /&gt;
&lt;br /&gt;
'''9. Run the mobile client using minimal permission''' &lt;br /&gt;
Risks: Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
&lt;br /&gt;
**Run with the minimum privilege required for the application on the operating system. &lt;br /&gt;
**Don't authorize code/app to execute with root privilege&lt;br /&gt;
**Always perform testing as a standard user (rather than a privileged user)&lt;br /&gt;
**Least privilege. Be aware of privileges granted by default by API's and disable them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10. Enforce higher  security posture on the device for sensitive apps''' &lt;br /&gt;
&lt;br /&gt;
**If a sensitive application needs to be provisioned on a device, application can employ enforcement of the  certain security posture on the device (such as PIN, remote management/wipe) // I don't follow this point.&lt;br /&gt;
** Enterprise applications can employ this principle of doing a security posture check before deployment of sensitive enterprise applications&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Candidates (to be merged if needed) ===&lt;br /&gt;
&lt;br /&gt;
'''11. No secrets in code/binary'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Mobile application binaries can be easily reverse engineered.&lt;br /&gt;
&lt;br /&gt;
** Do not store any passwords or secrets in the application binary &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''12. Protect your application from other malicious applications on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': User's are prone to install applications that look cool (may be malicious) and can transmit data about user (or stored data) for malicious purpose.&lt;br /&gt;
&lt;br /&gt;
**(?? What guidelines could be provided to developers)&lt;br /&gt;
**User education on using due diligence while installing third party applications on mobile devices &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//What about runtime interpreters - some guidelines on these?&lt;br /&gt;
&lt;br /&gt;
=== Original list (kept for review) ===&lt;br /&gt;
# Protect data at rest&lt;br /&gt;
# Protect data in transport&lt;br /&gt;
# Multi-factor authentication&lt;br /&gt;
# Session management&lt;br /&gt;
# Least privilege access control&lt;br /&gt;
# Untrusted data validation&lt;br /&gt;
# Output encoding&lt;br /&gt;
# Enterprise device management&lt;br /&gt;
# Keep business logic on the server&lt;br /&gt;
# Platform security&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111064</id>
		<title>Projects/OWASP Mobile Security Project - Top Ten Mobile Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111064"/>
				<updated>2011-05-25T12:45:12Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Top 10 mobile controls and design principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Top 10 mobile controls and design principles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Identify and protect sensitive data on the mobile device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Unsafe sensitive data storage, attacks on decommissioned phones unintentional disclosure:&lt;br /&gt;
Mobile devices (being mobile) have a higher risk of getting lost, stolen. And it is trivial to Jailbreak or root the device once someone has physical possession of the device. Adequate protection be built to minimize the loss of sensitive data on device.&lt;br /&gt;
&lt;br /&gt;
** In the design phase analyze what data is sensitive and needs to be protected and apply appropriate controls (user personal/privacy data, password credentials etc.).&lt;br /&gt;
** Store sensitive data on the server instead of client-end  device, if possible.&lt;br /&gt;
** Leverage the encryption and key-store mechanism provided by the mobile OS/hardware to secure sensitive data. In case no good key management is available on the client-end, storing keys on the server side could be considered.&lt;br /&gt;
** Do not store/cache sensitive data on the removable media&lt;br /&gt;
** Use only protected temp/cache directories (Do not store temp/cached data in a world readable directory)&lt;br /&gt;
** Automatically delete data from device which is no longer required &lt;br /&gt;
** Be aware of caches and temporary storage as a possible leakage channel&lt;br /&gt;
** Managed devices should leverage remote wipe and kill switch to remove sensitive information from the device&lt;br /&gt;
** Schedule deletion according to time, rather than on a push-pop basis.&lt;br /&gt;
** Use secure deletion procedures.&lt;br /&gt;
** Be careful when sharing cache data with other applications (check for covert channels leaking sensitive data)&lt;br /&gt;
** Consider the security of the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
** Where possible classify data storage according to sensitivity and apply controls accordingly (e.g. passwords, contact data, location vs error logs).&lt;br /&gt;
** Apply the principle of minimal disclosure - only collect and disclose data which is required for the application (how to know what this is?)&lt;br /&gt;
** Use non-persistent identifiers which are not shared with other apps wherever possible - e.g. do not use the device ID number as an identifier unless there is a good reason to do so.&lt;br /&gt;
** Apply techniques for the detection of covert channels - e.g. covert flow trees to discover information which may flow through shared resources such as file systems, resource use etc...&lt;br /&gt;
** Carefully control what data which is stored in public stores such as address book, media gallery etc... including metadata. &lt;br /&gt;
** Consider using SIM card as default storage for small but sensitive data such as keys. //To be researched more&lt;br /&gt;
** For cryptographic keys, implement key management best practice including exploiting SIM card capabilities where possible //hook to best practice.&lt;br /&gt;
&lt;br /&gt;
'''2. Handle password credentials securely  on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Spyware, Surveillance, Financial malware, UI impersonation&lt;br /&gt;
User's password credentials if stolen not only provides unauthorized access to the mobile backend service but potentially many other services/accounts used by the user. Since a majority of the users  reuse their passwords (http://www.pcworld.com/article/188763/too_many_people_reuse_logins_study_finds.html )&lt;br /&gt;
&lt;br /&gt;
**Instead of passwords consider using longer term authorization tokens that can be securely stored on the device . Encrypt the tokens while stored on the device and in transit. Tokens can be issued by the backend service after verifying the user credentials initially. And the tokens could be time bound to the specific service, minimizing the damage in loss scenarios. Consider using the latest versions of the authorization standards (such as OAuth 2.0).&lt;br /&gt;
**In case passwords need to stored on the device leverage the encryption and key-store mechanism provided by the mobile OS/hardware to securely store password credentials&lt;br /&gt;
**Provide mechanisms to the mobile user to change/remove passwords on the device (renew tokens)&lt;br /&gt;
**Password credentials should be marked to avoid being copied to backups &lt;br /&gt;
**Ensure passwords and keys are not visible in cache or logs&lt;br /&gt;
**We recommend that one-time codes (OTP) should not be forwarded via SMS. Consider using HTTPS and protect it on the device (Zitmo)... //or can we make a better rec on this?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Ensure sensitive data is protected in transit''' &lt;br /&gt;
&lt;br /&gt;
'''Risks''': Network spoofing attacks, Surveillance&lt;br /&gt;
Majority of the smartphones are capable of using multiple transport carriers including Wifi, provider network(3G, GSM,..), bluetooth. Sensitive data passing through insecure channels could be intercepted.&lt;br /&gt;
&lt;br /&gt;
**Protecting Data in transit (assume the worst case, user sitting in a public unprotected wifi )&lt;br /&gt;
**Applications should enforce the use of the end-end secure channel (such as SSL/TLS) when sending sensitive information on wire/air. (Do not assume transport encryption)&lt;br /&gt;
**For sensitive data, to reduce the risk of man-in-middle (like SSL proxy), secure connection should only be established  after verifying the credentials of remote end-point (server). This can be achieved by ensuring that SSL is only established with the end points having the trusted certificates in key chain. //This carries a high usability cost as advice...&lt;br /&gt;
** Do not disable or ignore the SSL chain validation.  &lt;br /&gt;
** SMS, MMS or notifications should not be used to send sensitive data to mobile end points // What about banking OTP's?&lt;br /&gt;
** Consider use of GSM encryption-on flags to verify that GSM encryption is on.&lt;br /&gt;
** Provide appropriate trust cues for linking to unknown third party applications.&lt;br /&gt;
** Do not train users to follow untrusted paths (e.g. accept invalid certificates).&lt;br /&gt;
** Provide a reporting channel for phishing from apps (e.g. if you are a browser plugin developer). &lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google vulnerability of Client Login account credentials on unprotected wifi [http://www.uni-ulm.de/in/mi/mitarbeiter/koenings/catching-authtokens.html]&lt;br /&gt;
&lt;br /&gt;
'''4. Keep the back-end API and mobile platform secure'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Attacks on back-ends through mobile device, loss of data via cloud storage. Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. Insecure implementation of backend APIs or services, and not keeping the back-end platform hardened/patched will allow bad guys to directly attack/compromise the back-ends.&lt;br /&gt;
&lt;br /&gt;
**Web Services/ SOAP/ REST , security best practices (placeholder)&lt;br /&gt;
** Input validation&lt;br /&gt;
** Do not use a generic  shared secret for integration to backend (like embedded password in code)&lt;br /&gt;
**Use authentication that ties back to the end user identity (rather than the device identity)&lt;br /&gt;
**Ensure authorization controls are done correctly in the backend APIs.&lt;br /&gt;
**Ensure that the backend platform is running on a hardened configuration with latest security patches&lt;br /&gt;
**Employ rate limiting and throttling, test for DDoS vulnerabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5. Implement user authentication/authorization and session management  correctly'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': &lt;br /&gt;
Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. It is important to ensure that the session management is done correctly after the initial authentication.&lt;br /&gt;
&lt;br /&gt;
**User authentication must be based on user's credentials.&lt;br /&gt;
**Use unpredictable session identifier with high entropy&lt;br /&gt;
**Do not use device id (UDID or IMEI) as the only session identifier. Device Id is easy to spoof and potentially leaks private information when linked to other data.  (Device Id could in some cases be used as an additional check that the request is originating from the known device) // Giles:I would NOT make the last recommendation because Device ID can be used for cross-site tracking since it is shared between apps.&lt;br /&gt;
**Session tokens can be cached using the operating system features to encrypt while in storage on device (e.g. Keychains). &lt;br /&gt;
** Device cert can be used for stronger device identity&lt;br /&gt;
** Implement best practices for dormancy (3GPP), caching etc... to minimise signalling load on base stations.&lt;br /&gt;
** Warn user and obtain consent for any cost implications for app behaviour.&lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google's ClientLogin implementation [http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html]&lt;br /&gt;
&lt;br /&gt;
'''6. Ensure strong vulnerability and patch management in place'''&lt;br /&gt;
&lt;br /&gt;
**All the back-end APIs (WebServices/REST) for mobile apps must be tested for vulnerabilities periodically.&lt;br /&gt;
** Developers should use static code analyzer tools and fuzzing tools for testing and finding security flaws.&lt;br /&gt;
**Applications must be designed and provisioned to allow updates for security patches, taking into account the requirements for approval by app-stores.&lt;br /&gt;
**Application team is responsible for tracking all third party frameworks/APIs used in the mobile application for security patches. A corresponding security update must be done for the mobile application using these third party APIs/frameworks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''7. Employ the secure coding/development practices'''&lt;br /&gt;
&lt;br /&gt;
//Risk? Isn't this circular? I don't understand the principle here.&lt;br /&gt;
&lt;br /&gt;
** Input Validation and Output Encoding&lt;br /&gt;
**Vet the security/authenticity of any third party code/libraries used in your mobile application ( reliable source, supported, no backend Trojans, licensing)&lt;br /&gt;
**Avoid opening application specific server sockets (listener ports) on the client device. Use the communication mechanisms provided by the OS. &lt;br /&gt;
//(Add least privilege)&lt;br /&gt;
**Code signing for some mobile platforms implies inherent trust between applications (with same code signatures), installed on the same mobile device. Plan code signing mechanisms properly. //Needs elaboration.&lt;br /&gt;
**Leverage static and binary code analyzers to find security flaws.&lt;br /&gt;
**Use safe string function, avoid buffer and Integer overflow //Is this mobile specific?&lt;br /&gt;
**Context aware security: may be able to decrease/increase access based on the context (e.g. location, network)&lt;br /&gt;
**For applications using JNI (Android) using a third party validation to ensure no vulnerabilities.&lt;br /&gt;
**Remove all test code before releasing the application&lt;br /&gt;
**Ensure logging is done appropriately in the released application. No excessive logging, no sensitive user information in log files&lt;br /&gt;
//What sort of information should be recorded in the logs.&lt;br /&gt;
** Follow security best practice for implementation of runtime interpreters (be careful when implementing anything which turns user input into executable code). //Hook...&lt;br /&gt;
&lt;br /&gt;
'''8. Perform data integration with third party backend applications correctly'''&lt;br /&gt;
Risks: Unintended disclosure&lt;br /&gt;
** User informed if any personal data is collected or sent //This needs to be detailed - how to inform - one-time, on install, depending on the type of data etc...?&lt;br /&gt;
**No sensitive or user personal data is sent or shared with a third party/social site without prior approval and knowledge of the user. // ditto&lt;br /&gt;
**Validate all data received from the non-trusted third party before processing in the application. //What should be validated. Is this mobile-speciifc?&lt;br /&gt;
** Do not send data which is not required for the functioning of the application unless you have obtained the explicit consent of the user.&lt;br /&gt;
&lt;br /&gt;
'''9. Run the mobile client using minimal permission''' &lt;br /&gt;
Risks: Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
&lt;br /&gt;
**Run with the minimum privilege required for the application on the operating system. &lt;br /&gt;
**Don't authorize code/app to execute with root privilege&lt;br /&gt;
**Always perform testing as a standard user (rather than a privileged user)&lt;br /&gt;
**Least privilege. Be aware of privileges granted by default by API's and disable them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10. Enforce higher  security posture on the device for sensitive apps''' &lt;br /&gt;
&lt;br /&gt;
**If a sensitive application needs to be provisioned on a device, application can employ enforcement of the  certain security posture on the device (such as PIN, remote management/wipe) // I don't follow this point.&lt;br /&gt;
** Enterprise applications can employ this principle of doing a security posture check before deployment of sensitive enterprise applications&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Candidates (to be merged if needed) ===&lt;br /&gt;
&lt;br /&gt;
'''11. No secrets in code/binary'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Mobile application binaries can be easily reverse engineered.&lt;br /&gt;
&lt;br /&gt;
** Do not store any passwords or secrets in the application binary &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''12. Protect your application from other malicious applications on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': User's are prone to install applications that look cool (may be malicious) and can transmit data about user (or stored data) for malicious purpose.&lt;br /&gt;
&lt;br /&gt;
**(?? What guidelines could be provided to developers)&lt;br /&gt;
**User education on using due diligence while installing third party applications on mobile devices &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//What about runtime interpreters - some guidelines on these?&lt;br /&gt;
&lt;br /&gt;
=== Original list (kept for review) ===&lt;br /&gt;
# Protect data at rest&lt;br /&gt;
# Protect data in transport&lt;br /&gt;
# Multi-factor authentication&lt;br /&gt;
# Session management&lt;br /&gt;
# Least privilege access control&lt;br /&gt;
# Untrusted data validation&lt;br /&gt;
# Output encoding&lt;br /&gt;
# Enterprise device management&lt;br /&gt;
# Keep business logic on the server&lt;br /&gt;
# Platform security&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111063</id>
		<title>Projects/OWASP Mobile Security Project - Top Ten Mobile Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111063"/>
				<updated>2011-05-25T12:35:33Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Top 10 mobile controls and design principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Top 10 mobile controls and design principles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Identify and protect sensitive data on the mobile device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Unsafe sensitive data storage, attacks on decommissioned phones unintentional disclosure:&lt;br /&gt;
Mobile devices (being mobile) have a higher risk of getting lost, stolen. And it is trivial to Jailbreak or root the device once someone has physical possession of the device. Adequate protection be built to minimize the loss of sensitive data on device.&lt;br /&gt;
&lt;br /&gt;
** In the design phase analyze what data is sensitive and needs to be protected and apply appropriate controls (user personal/privacy data, password credentials etc.).&lt;br /&gt;
** Store sensitive data on the server instead of client-end  device, if possible.&lt;br /&gt;
** Leverage the encryption and key-store mechanism provided by the mobile OS/hardware to secure sensitive data. In case no good key management is available on the client-end, storing keys on the server side could be considered.&lt;br /&gt;
** Do not store/cache sensitive data on the removable media&lt;br /&gt;
** Use only protected temp/cache directories (Do not store temp/cached data in a world readable directory)&lt;br /&gt;
** Automatically delete data from device which is no longer required &lt;br /&gt;
** Be aware of caches and temporary storage as a possible leakage channel&lt;br /&gt;
** Managed devices should leverage remote wipe and kill switch to remove sensitive information from the device&lt;br /&gt;
** Schedule deletion according to time, rather than on a push-pop basis.&lt;br /&gt;
** Use secure deletion procedures.&lt;br /&gt;
** Be careful when sharing cache data with other applications (check for covert channels leaking sensitive data)&lt;br /&gt;
** Consider the security of the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
** Where possible classify data storage according to sensitivity and apply controls accordingly (e.g. passwords, contact data, location vs error logs).&lt;br /&gt;
** Apply the principle of minimal disclosure - only collect and disclose data which is required for the application (how to know what this is?)&lt;br /&gt;
** Use non-persistent identifiers which are not shared with other apps wherever possible - e.g. do not use the device ID number as an identifier unless there is a good reason to do so.&lt;br /&gt;
** Apply techniques for the detection of covert channels - e.g. covert flow trees to discover information which may flow through shared resources such as file systems, resource use etc...&lt;br /&gt;
** Carefully control what data which is stored in public stores such as address book, media gallery etc... including metadata. &lt;br /&gt;
** Consider using SIM card as default storage for small but sensitive data such as keys. //To be researched more&lt;br /&gt;
** For cryptographic keys, implement key management best practice including exploiting SIM card capabilities where possible //hook to best practice.&lt;br /&gt;
&lt;br /&gt;
'''2. Handle password credentials securely  on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Spyware, Surveillance, Financial malware, UI impersonation&lt;br /&gt;
User's password credentials if stolen not only provides unauthorized access to the mobile backend service but potentially many other services/accounts used by the user. Since a majority of the users  reuse their passwords (http://www.pcworld.com/article/188763/too_many_people_reuse_logins_study_finds.html )&lt;br /&gt;
&lt;br /&gt;
**Instead of passwords consider using longer term authorization tokens that can be securely stored on the device . Encrypt the tokens while stored on the device and in transit. Tokens can be issued by the backend service after verifying the user credentials initially. And the tokens could be time bound to the specific service, minimizing the damage in loss scenarios. Consider using the latest versions of the authorization standards (such as OAuth 2.0).&lt;br /&gt;
**In case passwords need to stored on the device leverage the encryption and key-store mechanism provided by the mobile OS/hardware to securely store password credentials&lt;br /&gt;
**Provide mechanisms to the mobile user to change/remove passwords on the device (renew tokens)&lt;br /&gt;
**Password credentials should be marked to avoid being copied to backups &lt;br /&gt;
**Ensure passwords and keys are not visible in cache or logs&lt;br /&gt;
**We recommend that one-time codes (OTP) should not be forwarded via SMS. Consider using HTTPS and protect it on the device (Zitmo)... //or can we make a better rec on this?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Ensure sensitive data is protected in transit''' &lt;br /&gt;
&lt;br /&gt;
'''Risks''': Network spoofing attacks, Surveillance&lt;br /&gt;
Majority of the smartphones are capable of using multiple transport carriers including Wifi, provider network(3G, GSM,..), bluetooth. Sensitive data passing through insecure channels could be intercepted.&lt;br /&gt;
&lt;br /&gt;
**Protecting Data in transit (assume the worst case, user sitting in a public unprotected wifi )&lt;br /&gt;
**Applications should ensure that a secure channel (such as SSL/TLS) is established end-end when sending sensitive information on wire/air. (Do not assume transport encryption)&lt;br /&gt;
**To reduce the risk of man-in-middle (like SSL proxy), secure connection should only be established  after verifying the credentials of remote end-point (server). This can be achieved by ensuring that SSL is only established with the end points having the trusted certificates in key chain. //This carries a high usability cost as advice...&lt;br /&gt;
** Do not disable or ignore the SSL chain validation.  &lt;br /&gt;
** SMS, MMS or notifications should not be used to send sensitive data to mobile end points // What about banking OTP's?&lt;br /&gt;
** Consider use of GSM encryption-on flags to verify that GSM encryption is on.&lt;br /&gt;
** Provide appropriate trust cues for linking to unknown third party applications.&lt;br /&gt;
** Do not train users to follow untrusted paths (e.g. accept invalid certificates).&lt;br /&gt;
** Provide a reporting channel for phishing from apps (e.g. if you are a browser plugin developer). &lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google vulnerability of Client Login account credentials on unprotected wifi [http://www.uni-ulm.de/in/mi/mitarbeiter/koenings/catching-authtokens.html]&lt;br /&gt;
&lt;br /&gt;
'''4. Keep the back-end API and mobile platform secure'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Attacks on back-ends through mobile device, loss of data via cloud storage. Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. Insecure implementation of backend APIs or services, and not keeping the back-end platform hardened/patched will allow bad guys to directly attack/compromise the back-ends.&lt;br /&gt;
&lt;br /&gt;
**Web Services/ SOAP/ REST , security best practices (placeholder)&lt;br /&gt;
** Input validation&lt;br /&gt;
** Do not use a generic  shared secret for integration to backend (like embedded password in code)&lt;br /&gt;
**Use authentication that ties back to the end user identity (rather than the device identity)&lt;br /&gt;
**Ensure authorization controls are done correctly in the backend APIs.&lt;br /&gt;
**Ensure that the backend platform is running on a hardened configuration with latest security patches&lt;br /&gt;
**Employ rate limiting and throttling, test for DDoS vulnerabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5. Implement user authentication/authorization and session management  correctly'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': &lt;br /&gt;
Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. It is important to ensure that the session management is done correctly after the initial authentication.&lt;br /&gt;
&lt;br /&gt;
**User authentication must be based on user's credentials.&lt;br /&gt;
**Use unpredictable session identifier with high entropy&lt;br /&gt;
**Do not use device id (UDID or IMEI) as the only session identifier. Device Id is easy to spoof and potentially leaks private information when linked to other data.  (Device Id could in some cases be used as an additional check that the request is originating from the known device) // Giles:I would NOT make the last recommendation because Device ID can be used for cross-site tracking since it is shared between apps.&lt;br /&gt;
**Session tokens can be cached using the operating system features to encrypt while in storage on device (e.g. Keychains). &lt;br /&gt;
** Device cert can be used for stronger device identity&lt;br /&gt;
** Implement best practices for dormancy (3GPP), caching etc... to minimise signalling load on base stations.&lt;br /&gt;
** Warn user and obtain consent for any cost implications for app behaviour.&lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google's ClientLogin implementation [http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html]&lt;br /&gt;
&lt;br /&gt;
'''6. Ensure strong vulnerability and patch management in place'''&lt;br /&gt;
&lt;br /&gt;
**All the back-end APIs (WebServices/REST) for mobile apps must be tested for vulnerabilities periodically.&lt;br /&gt;
** Developers should use static code analyzer tools and fuzzing tools for testing and finding security flaws.&lt;br /&gt;
**Applications must be designed and provisioned to allow updates for security patches, taking into account the requirements for approval by app-stores.&lt;br /&gt;
**Application team is responsible for tracking all third party frameworks/APIs used in the mobile application for security patches. A corresponding security update must be done for the mobile application using these third party APIs/frameworks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''7. Employ the secure coding/development practices'''&lt;br /&gt;
&lt;br /&gt;
//Risk? Isn't this circular? I don't understand the principle here.&lt;br /&gt;
&lt;br /&gt;
** Input Validation and Output Encoding&lt;br /&gt;
**Vet the security/authenticity of any third party code/libraries used in your mobile application ( reliable source, supported, no backend Trojans, licensing)&lt;br /&gt;
**Avoid opening application specific server sockets (listener ports) on the client device. Use the communication mechanisms provided by the OS. &lt;br /&gt;
//(Add least privilege)&lt;br /&gt;
**Code signing for some mobile platforms implies inherent trust between applications (with same code signatures), installed on the same mobile device. Plan code signing mechanisms properly. //Needs elaboration.&lt;br /&gt;
**Leverage static and binary code analyzers to find security flaws.&lt;br /&gt;
**Use safe string function, avoid buffer and Integer overflow //Is this mobile specific?&lt;br /&gt;
**Context aware security: may be able to decrease/increase access based on the context (e.g. location, network)&lt;br /&gt;
**For applications using JNI (Android) using a third party validation to ensure no vulnerabilities.&lt;br /&gt;
**Remove all test code before releasing the application&lt;br /&gt;
**Ensure logging is done appropriately in the released application. No excessive logging, no sensitive user information in log files&lt;br /&gt;
//What sort of information should be recorded in the logs.&lt;br /&gt;
** Follow security best practice for implementation of runtime interpreters (be careful when implementing anything which turns user input into executable code). //Hook...&lt;br /&gt;
&lt;br /&gt;
'''8. Perform data integration with third party backend applications correctly'''&lt;br /&gt;
Risks: Unintended disclosure&lt;br /&gt;
** User informed if any personal data is collected or sent //This needs to be detailed - how to inform - one-time, on install, depending on the type of data etc...?&lt;br /&gt;
**No sensitive or user personal data is sent or shared with a third party/social site without prior approval and knowledge of the user. // ditto&lt;br /&gt;
**Validate all data received from the non-trusted third party before processing in the application. //What should be validated. Is this mobile-speciifc?&lt;br /&gt;
** Do not send data which is not required for the functioning of the application unless you have obtained the explicit consent of the user.&lt;br /&gt;
&lt;br /&gt;
'''9. Run the mobile client using minimal permission''' &lt;br /&gt;
Risks: Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
&lt;br /&gt;
**Run with the minimum privilege required for the application on the operating system. &lt;br /&gt;
**Don't authorize code/app to execute with root privilege&lt;br /&gt;
**Always perform testing as a standard user (rather than a privileged user)&lt;br /&gt;
**Least privilege. Be aware of privileges granted by default by API's and disable them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10. Enforce higher  security posture on the device for sensitive apps''' &lt;br /&gt;
&lt;br /&gt;
**If a sensitive application needs to be provisioned on a device, application can employ enforcement of the  certain security posture on the device (such as PIN, remote management/wipe) // I don't follow this point.&lt;br /&gt;
** Enterprise applications can employ this principle of doing a security posture check before deployment of sensitive enterprise applications&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Candidates (to be merged if needed) ===&lt;br /&gt;
&lt;br /&gt;
'''11. No secrets in code/binary'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Mobile application binaries can be easily reverse engineered.&lt;br /&gt;
&lt;br /&gt;
** Do not store any passwords or secrets in the application binary &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''12. Protect your application from other malicious applications on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': User's are prone to install applications that look cool (may be malicious) and can transmit data about user (or stored data) for malicious purpose.&lt;br /&gt;
&lt;br /&gt;
**(?? What guidelines could be provided to developers)&lt;br /&gt;
**User education on using due diligence while installing third party applications on mobile devices &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//What about runtime interpreters - some guidelines on these?&lt;br /&gt;
&lt;br /&gt;
=== Original list (kept for review) ===&lt;br /&gt;
# Protect data at rest&lt;br /&gt;
# Protect data in transport&lt;br /&gt;
# Multi-factor authentication&lt;br /&gt;
# Session management&lt;br /&gt;
# Least privilege access control&lt;br /&gt;
# Untrusted data validation&lt;br /&gt;
# Output encoding&lt;br /&gt;
# Enterprise device management&lt;br /&gt;
# Keep business logic on the server&lt;br /&gt;
# Platform security&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111062</id>
		<title>Projects/OWASP Mobile Security Project - Top Ten Mobile Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=111062"/>
				<updated>2011-05-25T12:32:59Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Top 10 mobile controls and design principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Top 10 mobile controls and design principles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Identify and protect sensitive data on the mobile device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Unsafe sensitive data storage, attacks on decommissioned phones unintentional disclosure:&lt;br /&gt;
Mobile devices (being mobile) have a higher risk of getting lost, stolen. And it is trivial to Jailbreak or root the device once someone has physical possession of the device. Adequate protection be built to minimize the loss of sensitive data on device.&lt;br /&gt;
&lt;br /&gt;
** In the design phase analyze what data is sensitive and needs to be protected and apply appropriate controls (user personal/privacy data, password credentials etc.).&lt;br /&gt;
** Store sensitive data on the server instead of client-end  device, if possible.&lt;br /&gt;
** Leverage the encryption and key-store mechanism provided by the mobile OS/hardware to secure sensitive data. In case no good key management is available on the client-end, storing keys on the server side could be considered.&lt;br /&gt;
** Do not store/cache sensitive data on the removable media&lt;br /&gt;
** Use only protected temp/cache directories (Do not store temp/cached data in a world readable directory)&lt;br /&gt;
** Automatically delete data from device which is no longer required &lt;br /&gt;
** Be aware of caches and temporary storage as a possible leakage channel&lt;br /&gt;
** Managed devices should leverage remote wipe and kill switch to remove sensitive information from the device&lt;br /&gt;
** Schedule deletion according to time, rather than on a push-pop basis.&lt;br /&gt;
** Use secure deletion procedures.&lt;br /&gt;
** Be careful when sharing cache data with other applications (check for covert channels leaking sensitive data)&lt;br /&gt;
** Consider the security of the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
** Where possible classify data storage according to sensitivity and apply controls accordingly (e.g. passwords, contact data, location vs error logs).&lt;br /&gt;
** Apply the principle of minimal disclosure - only collect and disclose data which is required for the application (how to know what this is?)&lt;br /&gt;
** Use non-persistent identifiers which are not shared with other apps wherever possible - e.g. do not use the device ID number as an identifier unless there is a good reason to do so.&lt;br /&gt;
** Apply techniques for the detection of covert channels - e.g. covert flow trees to discover information which may flow through shared resources such as file systems, resource use etc...&lt;br /&gt;
** Carefully control what data which is stored in public stores such as address book, media gallery etc... including metadata. &lt;br /&gt;
** Consider using SIM card as default storage for small but sensitive data such as keys. //To be researched more&lt;br /&gt;
** For cryptographic keys, implement key management best practice including exploiting SIM card capabilities where possible //hook to best practice.&lt;br /&gt;
&lt;br /&gt;
'''2. Handle password credentials securely  on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Spyware, Surveillance, Financial malware, UI impersonation&lt;br /&gt;
User's password credentials if stolen not only provides unauthorized access to the mobile backend service but potentially many other services/accounts used by the user. Since a majority of the users  reuse their passwords (http://www.pcworld.com/article/188763/too_many_people_reuse_logins_study_finds.html )&lt;br /&gt;
&lt;br /&gt;
**Instead of passwords consider using longer term authorization tokens that can be securely stored on the device . Encrypt the tokens while stored on the device and in transit. Tokens can be issued by the backend service after verifying the user credentials initially. And the tokens could be time bound to the specific service, minimizing the damage in loss scenarios. Consider using the latest versions of the authorization standards (such as OAuth 2.0).&lt;br /&gt;
**In case passwords need to stored on the device leverage the encryption and key-store mechanism provided by the mobile OS/hardware to securely store password credentials&lt;br /&gt;
**Provide mechanisms to the mobile user to change/remove passwords on the device (renew tokens)&lt;br /&gt;
**Password credentials should be marked to avoid being copied to backups &lt;br /&gt;
**Ensure passwords and keys are not visible in cache or logs&lt;br /&gt;
**We recommend that one-time codes (OTP) should not be forwarded via SMS (Zitmo)... //or can we make a better rec on this?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Ensure sensitive data is protected in transit''' &lt;br /&gt;
&lt;br /&gt;
'''Risks''': Network spoofing attacks, Surveillance&lt;br /&gt;
Majority of the smartphones are capable of using multiple transport carriers including Wifi, provider network(3G, GSM,..), bluetooth. Sensitive data passing through insecure channels could be intercepted.&lt;br /&gt;
&lt;br /&gt;
**Protecting Data in transit (assume the worst case, user sitting in a public unprotected wifi )&lt;br /&gt;
**Applications should ensure that a secure channel (such as SSL/TLS) is established end-end when sending sensitive information on wire/air. (Do not assume transport encryption)&lt;br /&gt;
**To reduce the risk of man-in-middle (like SSL proxy), secure connection should only be established  after verifying the credentials of remote end-point (server). This can be achieved by ensuring that SSL is only established with the end points having the trusted certificates in key chain. //This carries a high usability cost as advice...&lt;br /&gt;
** Do not disable or ignore the SSL chain validation.  &lt;br /&gt;
** SMS, MMS or notifications should not be used to send sensitive data to mobile end points // What about banking OTP's?&lt;br /&gt;
** Consider use of GSM encryption-on flags to verify that GSM encryption is on.&lt;br /&gt;
** Provide appropriate trust cues for linking to unknown third party applications.&lt;br /&gt;
** Do not train users to follow untrusted paths (e.g. accept invalid certificates).&lt;br /&gt;
** Provide a reporting channel for phishing from apps (e.g. if you are a browser plugin developer). &lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google vulnerability of Client Login account credentials on unprotected wifi [http://www.uni-ulm.de/in/mi/mitarbeiter/koenings/catching-authtokens.html]&lt;br /&gt;
&lt;br /&gt;
'''4. Keep the back-end API and mobile platform secure'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': Attacks on back-ends through mobile device, loss of data via cloud storage. Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. Insecure implementation of backend APIs or services, and not keeping the back-end platform hardened/patched will allow bad guys to directly attack/compromise the back-ends.&lt;br /&gt;
&lt;br /&gt;
**Web Services/ SOAP/ REST , security best practices (placeholder)&lt;br /&gt;
** Input validation&lt;br /&gt;
** Do not use a generic  shared secret for integration to backend (like embedded password in code)&lt;br /&gt;
**Use authentication that ties back to the end user identity (rather than the device identity)&lt;br /&gt;
**Ensure authorization controls are done correctly in the backend APIs.&lt;br /&gt;
**Ensure that the backend platform is running on a hardened configuration with latest security patches&lt;br /&gt;
**Employ rate limiting and throttling, test for DDoS vulnerabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5. Implement user authentication/authorization and session management  correctly'''&lt;br /&gt;
&lt;br /&gt;
'''Risks''': &lt;br /&gt;
Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. It is important to ensure that the session management is done correctly after the initial authentication.&lt;br /&gt;
&lt;br /&gt;
**User authentication must be based on user's credentials.&lt;br /&gt;
**Use unpredictable session identifier with high entropy&lt;br /&gt;
**Do not use device id (UDID or IMEI) as the only session identifier. Device Id is easy to spoof and potentially leaks private information when linked to other data.  (Device Id could in some cases be used as an additional check that the request is originating from the known device) // Giles:I would NOT make the last recommendation because Device ID can be used for cross-site tracking since it is shared between apps.&lt;br /&gt;
**Session tokens can be cached using the operating system features to encrypt while in storage on device (e.g. Keychains). &lt;br /&gt;
** Device cert can be used for stronger device identity&lt;br /&gt;
** Implement best practices for dormancy (3GPP), caching etc... to minimise signalling load on base stations.&lt;br /&gt;
** Warn user and obtain consent for any cost implications for app behaviour.&lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google's ClientLogin implementation [http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html]&lt;br /&gt;
&lt;br /&gt;
'''6. Ensure strong vulnerability and patch management in place'''&lt;br /&gt;
&lt;br /&gt;
**All the back-end APIs (WebServices/REST) for mobile apps must be tested for vulnerabilities periodically.&lt;br /&gt;
** Developers should use static code analyzer tools and fuzzing tools for testing and finding security flaws.&lt;br /&gt;
**Applications must be designed and provisioned to allow updates for security patches, taking into account the requirements for approval by app-stores.&lt;br /&gt;
**Application team is responsible for tracking all third party frameworks/APIs used in the mobile application for security patches. A corresponding security update must be done for the mobile application using these third party APIs/frameworks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''7. Employ the secure coding/development practices'''&lt;br /&gt;
&lt;br /&gt;
//Risk? Isn't this circular? I don't understand the principle here.&lt;br /&gt;
&lt;br /&gt;
** Input Validation and Output Encoding&lt;br /&gt;
**Vet the security/authenticity of any third party code/libraries used in your mobile application ( reliable source, supported, no backend Trojans, licensing)&lt;br /&gt;
**Avoid opening application specific server sockets (listener ports) on the client device. Use the communication mechanisms provided by the OS. &lt;br /&gt;
//(Add least privilege)&lt;br /&gt;
**Code signing for some mobile platforms implies inherent trust between applications (with same code signatures), installed on the same mobile device. Plan code signing mechanisms properly. //Needs elaboration.&lt;br /&gt;
**Leverage static and binary code analyzers to find security flaws.&lt;br /&gt;
**Use safe string function, avoid buffer and Integer overflow //Is this mobile specific?&lt;br /&gt;
**Context aware security: may be able to decrease/increase access based on the context (e.g. location, network)&lt;br /&gt;
**For applications using JNI (Android) using a third party validation to ensure no vulnerabilities.&lt;br /&gt;
**Remove all test code before releasing the application&lt;br /&gt;
**Ensure logging is done appropriately in the released application. No excessive logging, no sensitive user information in log files&lt;br /&gt;
//What sort of information should be recorded in the logs.&lt;br /&gt;
** Follow security best practice for implementation of runtime interpreters (be careful when implementing anything which turns user input into executable code). //Hook...&lt;br /&gt;
&lt;br /&gt;
'''8. Perform data integration with third party backend applications correctly'''&lt;br /&gt;
Risks: Unintended disclosure&lt;br /&gt;
** User informed if any personal data is collected or sent //This needs to be detailed - how to inform - one-time, on install, depending on the type of data etc...?&lt;br /&gt;
**No sensitive or user personal data is sent or shared with a third party/social site without prior approval and knowledge of the user. // ditto&lt;br /&gt;
**Validate all data received from the non-trusted third party before processing in the application. //What should be validated. Is this mobile-speciifc?&lt;br /&gt;
** Do not send data which is not required for the functioning of the application unless you have obtained the explicit consent of the user.&lt;br /&gt;
&lt;br /&gt;
'''9. Run the mobile client using minimal permission''' &lt;br /&gt;
Risks: Data leakage, Surveillance, Spyware, Diallerware&lt;br /&gt;
&lt;br /&gt;
**Run with the minimum privilege required for the application on the operating system. &lt;br /&gt;
**Don't authorize code/app to execute with root privilege&lt;br /&gt;
**Always perform testing as a standard user (rather than a privileged user)&lt;br /&gt;
**Least privilege. Be aware of privileges granted by default by API's and disable them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10. Enforce higher  security posture on the device for sensitive apps''' &lt;br /&gt;
&lt;br /&gt;
**If a sensitive application needs to be provisioned on a device, application can employ enforcement of the  certain security posture on the device (such as PIN, remote management/wipe) // I don't follow this point.&lt;br /&gt;
** Enterprise applications can employ this principle of doing a security posture check before deployment of sensitive enterprise applications&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Candidates (to be merged if needed) ===&lt;br /&gt;
&lt;br /&gt;
'''11. No secrets in code/binary'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Mobile application binaries can be easily reverse engineered.&lt;br /&gt;
&lt;br /&gt;
** Do not store any passwords or secrets in the application binary &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''12. Protect your application from other malicious applications on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': User's are prone to install applications that look cool (may be malicious) and can transmit data about user (or stored data) for malicious purpose.&lt;br /&gt;
&lt;br /&gt;
**(?? What guidelines could be provided to developers)&lt;br /&gt;
**User education on using due diligence while installing third party applications on mobile devices &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//What about runtime interpreters - some guidelines on these?&lt;br /&gt;
&lt;br /&gt;
=== Original list (kept for review) ===&lt;br /&gt;
# Protect data at rest&lt;br /&gt;
# Protect data in transport&lt;br /&gt;
# Multi-factor authentication&lt;br /&gt;
# Session management&lt;br /&gt;
# Least privilege access control&lt;br /&gt;
# Untrusted data validation&lt;br /&gt;
# Output encoding&lt;br /&gt;
# Enterprise device management&lt;br /&gt;
# Keep business logic on the server&lt;br /&gt;
# Platform security&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=110575</id>
		<title>Projects/OWASP Mobile Security Project - Top Ten Mobile Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=110575"/>
				<updated>2011-05-17T18:17:26Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Top 10 mobile controls and design principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Top 10 mobile controls and design principles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Identify and protect sensitive data on the mobile device'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Mobile devices (being mobile) have a higher risk of getting lost, stolen. And it is trivial to Jailbreak or root the device once someone has physical possession of the device. Adequate protection be built to minimize the loss of sensitive data on device.&lt;br /&gt;
&lt;br /&gt;
** In the design phase analyze what data is sensitive and needs to be protected and apply appropriate controls (user personal/privacy data, password credentials etc.).&lt;br /&gt;
** Store sensitive data on the server instead of client-end  device, if possible.&lt;br /&gt;
**Leverage the encryption and key-store mechanism provided by the mobile OS/hardware to secure sensitive data. In case no good key management is available on the client-end, storing keys on the server side could be considered.&lt;br /&gt;
**Do not store/cache sensitive data on the removable media&lt;br /&gt;
**Use only protected temp/cache directories (Do not store temp/cached data in a world readable directory)&lt;br /&gt;
** Automatically delete data from device which is no longer required &lt;br /&gt;
** Be aware of caches and temporary storage as a possible leakage channel&lt;br /&gt;
**Managed devices should leverage remote wipe and kill switch to remove sensitive information from the device&lt;br /&gt;
**Schedule deletion according to time, rather than on a push-pop basis.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Handle password credentials securely  on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': User's password credentials if stolen not only provides unauthorized access to the mobile backend service but potentially many other services/accounts used by the user. Since a majority of the users  reuse their passwords (http://www.pcworld.com/article/188763/too_many_people_reuse_logins_study_finds.html )&lt;br /&gt;
&lt;br /&gt;
**Instead of passwords consider using longer term authorisation tokens that can be securely stored on the device (OAuth). Tokens can be issued by the backend service after verifying the user credentials initially. And the tokens could be time bound to the specific service, minimizing the damage in loss scenarios. &lt;br /&gt;
**In case passwords need to stored on the device leverage the encryption and key-store mechanism provided by the mobile OS/hardware to securely store password credentials&lt;br /&gt;
**Provide mechanisms to the mobile user to change/remove passwords on the device&lt;br /&gt;
**Password credentials should be marked to avoid being copied to backups &lt;br /&gt;
**Ensure passwords and keys are not visible in cache or logs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Ensure sensitive data is protected in transit''' &lt;br /&gt;
&lt;br /&gt;
'''Risk''': Majority of the smartphones are capable of using multiple transport carriers including Wifi, provider network(3G, GSM,..), bluetooth. Sensitive data passing through insecure channels could be intercepted.&lt;br /&gt;
&lt;br /&gt;
**Protecting Data in transit (assume the worst case, user sitting in a public unprotected wifi )&lt;br /&gt;
**Applications should ensure that a secure channel (such as SSL/TLS) is established end-end when sending sensitive information on wire/air. (Do not assume transport encryption)&lt;br /&gt;
**To reduce the risk of man-in-middle (like SSL proxy), secure connection should only be established  after verifying the credentials of remote end-point (server). This can be achieved by ensuring that SSL is only established with the end points having the trusted certificates in key chain. //This carries a high usability cost as advice...&lt;br /&gt;
**Do not disable or ignore the SSL chain validation.  &lt;br /&gt;
**SMS, MMS or notifications should not be used to send sensitive data to mobile end points&lt;br /&gt;
** Consider use of GSM encryption-on flags to verify that GSM encryption is on.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google vulnerability of Client Login account credentials on unprotected wifi [http://www.uni-ulm.de/in/mi/mitarbeiter/koenings/catching-authtokens.html]&lt;br /&gt;
&lt;br /&gt;
'''4. Keep the back-end API and mobile platform secure'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. Insecure implementation of backend APIs or services, and not keeping the back-end platform hardened/patched will allow bad guys to directly attack/compromise the back-ends.&lt;br /&gt;
&lt;br /&gt;
**Web Services/ SOAP/ REST , security best practices (placeholder)&lt;br /&gt;
** Input validation&lt;br /&gt;
** Do not use a generic  shared secret for integration to backend (like embedded password in code)&lt;br /&gt;
**Use authentication that ties back to the end user identity (rather than the device identity)&lt;br /&gt;
**Ensure authorization controls are done correctly in the backend APIs.&lt;br /&gt;
**Ensure that the backend platform is running on a hardened configuration with latest security patches&lt;br /&gt;
**Employ rate limiting and throttling, test for DDoS vulnerabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5. Implement user authentication/authorization and session management  correctly'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. It is important to ensure that the session management is done correctly after the initial authentication.&lt;br /&gt;
&lt;br /&gt;
**User authentication must be based on user's credentials.&lt;br /&gt;
**Use unpredictable session identifier with high entropy&lt;br /&gt;
**Do not use device id (UDID or IMEI) as the only session identifier. Device Id is easy to spoof.  (Device Id could be used as an additional check or stronger validation that the request is originating from the known device)&lt;br /&gt;
**Session tokens can be cached using the operating system features to encrypt while in storage on device (e.g. Keychains). &lt;br /&gt;
** Device cert can be used for stronger device identity&lt;br /&gt;
//Cover also excessive resource use.&lt;br /&gt;
&lt;br /&gt;
'''Reference''': Google's ClientLogin implementation [http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html]&lt;br /&gt;
&lt;br /&gt;
'''6. Ensure strong vulnerability and patch management in place'''&lt;br /&gt;
&lt;br /&gt;
**All the back-end APIs (WebServices/REST) for mobile apps must be tested for vulnerabilities periodically.&lt;br /&gt;
** Developers should use static code analyzer tools and fuzzing tools for testing and finding security flaws.&lt;br /&gt;
**Applications must be designed and provisioned to allow updates for security patches, taking into account the requirements for approval by app-stores.&lt;br /&gt;
**Application team is responsible for tracking all third party frameworks/APIs used in the mobile application for security patches. A corresponding security update must be done for the mobile application using these third party APIs/frameworks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''7. Employ the secure coding/development practices'''&lt;br /&gt;
&lt;br /&gt;
//Risk? Isn't this circular?&lt;br /&gt;
&lt;br /&gt;
** Input Validation and Output Encoding&lt;br /&gt;
**Vet the security/authenticity of any third party code/libraries used in your mobile application ( reliable source, supported, no backend Trojans, licensing)&lt;br /&gt;
**Avoid opening application specific server sockets (listener ports) on the client device. Use the communication mechanisms provided by the OS. //(least privilege)&lt;br /&gt;
**Code signing for some mobile platforms implies inherent trust between applications (with same code signatures), installed on the same mobile device. Plan code signing mechanisms properly. //Needs elaboration.&lt;br /&gt;
**Leverage static and binary code analyzers to find security flaws.&lt;br /&gt;
**Use safe string function, avoid buffer and Integer overflow //Is this mobile specific?&lt;br /&gt;
**Context aware security: may be able to decrease/increase access based on the context (e.g. location, network)&lt;br /&gt;
**For applications using JNI (Android) using a third party validation to ensure no vulnerabilities.&lt;br /&gt;
**Remove all test code before releasing the application&lt;br /&gt;
**Ensure logging is done appropriately in the released application. No excessive logging, no sensitive user information in log files&lt;br /&gt;
//What sort of information should be recorded in the logs.&lt;br /&gt;
&lt;br /&gt;
'''8. Perform data integration with third party backend applications correctly'''&lt;br /&gt;
&lt;br /&gt;
** User informed if any personal data is collected or sent &lt;br /&gt;
**No sensitive or user personal data is sent or shared with a third party/social site without prior approval and knowledge of the user.&lt;br /&gt;
**Validate all data received from the non-trusted third party before processing in the application. //What should be validated. Is this mobile-speciifc?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''9. Run the mobile client using minimal permission''' &lt;br /&gt;
&lt;br /&gt;
**Run with the minimum privilege required for the application on the operating system. &lt;br /&gt;
**Don't authorize code/app to execute with root privilege&lt;br /&gt;
**Always perform testing as a standard user (rather than a privileged user)&lt;br /&gt;
**Least privilege. Be aware of privileges granted by default by API's and disable them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10. Enforce higher  security posture on the device for sensitive apps''' &lt;br /&gt;
&lt;br /&gt;
**If a sensitive application needs to be provisioned on a device, application can employ enforcement of the  certain security posture on the device (such as PIN, remote management/wipe) // I don't follow this point.&lt;br /&gt;
** Enterprise applications can employ this principle of doing a security posture check before deployment of sensitive enterprise applications&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Candidates (to be merged if needed) ===&lt;br /&gt;
&lt;br /&gt;
'''11. No secrets in code/binary'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Mobile application binaries can be easily reverse engineered.&lt;br /&gt;
&lt;br /&gt;
**Do not store any passwords or secrets in the application binary &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''12. Protect your application from other malicious applications on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': User's are prone to install applications that look cool (may be malicious) and can transmit data about user (or stored data) for malicious purpose.&lt;br /&gt;
&lt;br /&gt;
**(?? What guidelines could be provided to developers)&lt;br /&gt;
**User education on using due diligence while installing third party applications on mobile devices &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//What about runtime interpreters&lt;br /&gt;
&lt;br /&gt;
=== Original list (kept for review) ===&lt;br /&gt;
# Protect data at rest&lt;br /&gt;
# Protect data in transport&lt;br /&gt;
# Multi-factor authentication&lt;br /&gt;
# Session management&lt;br /&gt;
# Least privilege access control&lt;br /&gt;
# Untrusted data validation&lt;br /&gt;
# Output encoding&lt;br /&gt;
# Enterprise device management&lt;br /&gt;
# Keep business logic on the server&lt;br /&gt;
# Platform security&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Architecture_and_design_principles&amp;diff=110543</id>
		<title>Architecture and design principles</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Architecture_and_design_principles&amp;diff=110543"/>
				<updated>2011-05-17T09:54:44Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Mobile Security */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a merge of ENISA, OWASP and Veracode top 10. Note that there is a mixture of threats and vulnerabilities here - we should decide whether to use risks (threats with impact on assets which occur with probability) and vulnerabilities (system flaws which increase the probability of a threat occurring). I have cut those risks/vulnerabilities which cannot be addressed in any way by developers.  We should decide whether to include recommendations in the style of &amp;quot;code of practice&amp;quot;- e.g. activity monitoring should only be used in circumstances xyz... (feel free to restructure)&lt;br /&gt;
&lt;br /&gt;
My recommendation would be to separate out the design principles from the Risks/Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
=='''Mobile Security'''==&lt;br /&gt;
*1. Threats, Risks and Vulnerabilities (Risks)&lt;br /&gt;
*2. Design Principles (As part of the Controls) - Added here [https://www.owasp.org/index.php/Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls#Top_10_mobile_controls_and_design_principles]&lt;br /&gt;
*3. Architectural Patterns  (New)&lt;br /&gt;
*4. Secure Mobile Development/Coding Guidelines&lt;br /&gt;
&lt;br /&gt;
==1. Top Risks/Vulnerabilities==&lt;br /&gt;
&lt;br /&gt;
* Unsafe sensitive data storage&lt;br /&gt;
** Consider the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
** Automatically delete data which is not required (how to know when it's not required?).&lt;br /&gt;
** Securely delete data using standard shredding techniques.&lt;br /&gt;
** Store a minimum of data on the client side device.&lt;br /&gt;
** Securely wipe removable media.&lt;br /&gt;
** Be aware of caches and temporary storage as a possible leakage channel.&lt;br /&gt;
** Implement key and password storage best practice.&lt;br /&gt;
** In the design phase analyse what data needs to be protected most and what doesn't and apply controls at appropriate places.&lt;br /&gt;
&lt;br /&gt;
* Unintentional disclosure of data: The smartphone user unintentionally discloses data on the smartphone.&lt;br /&gt;
** Apply the principle of minimal disclosure - only collect and disclose data which is required for the application (how to know what this is?)&lt;br /&gt;
** Use non-persistent identifiers wherever possible - e.g. do not use the EMEI number as an identifier unless there is a good reason to do so.&lt;br /&gt;
** Apply techniques for the detection of covert channels - e.g. covert flow trees to discover information which may flow through shared resources such as file systems, resource use etc...&lt;br /&gt;
** Carefully control what data which is stored in public stores such as address book, media gallery etc... including metadata.&lt;br /&gt;
** Obtain user explicit user consent according to best practice (see implementation guidelines) for collection of personal data.&lt;br /&gt;
&lt;br /&gt;
* Attacks on decommissioned smartphones: The smartphone is decommissioned improperly allowing an attacker access to the data on the device.&lt;br /&gt;
** See first risk&lt;br /&gt;
** Provide a convenient way of resetting access credentials which does not require the device (consider an automated timeout on access credentials).&lt;br /&gt;
** Consider using SIM card as default storage for small but sensitive data such as keys.&lt;br /&gt;
&lt;br /&gt;
* Phishing attacks: An attacker collects user credentials (such as passwords and credit card numbers) by means of fake apps or (SMS, email) messages that seem genuine.&lt;br /&gt;
** Provide appropriate trust cues for linking to unknown third party applications.&lt;br /&gt;
** Do not train users to follow untrusted paths.&lt;br /&gt;
** Provide a reporting channel for phishing from apps (e.g. if you are a browser plugin developer).&lt;br /&gt;
&lt;br /&gt;
* Spyware:  Spyware covers untargeted collection of personal information as opposed to targeted surveillance.&lt;br /&gt;
&lt;br /&gt;
* Network Spoofing Attacks: An attacker deploys a rogue network access point (WiFi or GSM) and users connect to it. The attacker subsequently intercepts (or tampers with) the user communication to carry out further attacks such as phishing.&lt;br /&gt;
** Use the GSM encryption-on indicator to detect and signal downgrade attacks.&lt;br /&gt;
&lt;br /&gt;
* Surveillance attacks: An attacker keeps a specific user under surveillance through the target user’s smartphone.&lt;br /&gt;
**  Don't use 3rd party code without carefully verifying&lt;br /&gt;
* Diallerware attacks: An attacker steals money from the user by means of malware that makes hidden use of premium SMS services or numbers.&lt;br /&gt;
* Financial malware attacks The smartphone is infected with malware specifically designed for stealing credit card numbers, online banking credentials or subverting online banking or ecommerce transactions.&lt;br /&gt;
* Network congestion 	Network resource overload due to smartphone usage leading to network unavailability for the end-user.&lt;br /&gt;
** Note that this relies a lot on smart developers because a lot of the congestion is due to signalling overload. Could we make some recommendations on detecting idle/focus so that the app knows when it really needs to be connected to the network?&lt;br /&gt;
* Unauthorized network connectivity (exfiltration or command &amp;amp; control)&lt;br /&gt;
* UI Impersonation&lt;br /&gt;
* System modification (rootkit, APN proxy config)&lt;br /&gt;
** Validate updates and input data from untrusted sources.&lt;br /&gt;
* Logic or Time bomb (including runtime interpreter)&lt;br /&gt;
** Define clearly who should be responsible for updating the application Extensions or plugins e.g. Angry birds Add-ons and installations &lt;br /&gt;
* Unsafe sensitive data transmission&lt;br /&gt;
* Hardcoded password/keys&lt;br /&gt;
* Lack of data protection in transit&lt;br /&gt;
** Don't allow SSL downgrade.&lt;br /&gt;
** Don't trust network infrastructure&lt;br /&gt;
** See Network Spoofing.&lt;br /&gt;
* Client-side injection&lt;br /&gt;
* Client-side DOS&lt;br /&gt;
* Malicious third-party code&lt;br /&gt;
** Follow security best practice for implementation of runtime interpreters (be careful when implementing anything which turns user input into executable code).&lt;br /&gt;
* Client-side buffer overflow&lt;br /&gt;
* Failure to properly handle inbound SMS messages&lt;br /&gt;
** Remove test code from software&lt;br /&gt;
* Failure to properly handle outbound SMS messages&lt;br /&gt;
* Failure to disable insecure platform features in application (caching of keystrokes, screen data)&lt;br /&gt;
** Least privilege. Be aware of privileges granted by default by API's and disable them.&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Mobile_Security_Project&amp;diff=110542</id>
		<title>OWASP Mobile Security Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Mobile_Security_Project&amp;diff=110542"/>
				<updated>2011-05-17T09:49:41Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Main ====&lt;br /&gt;
{{:Projects/OWASP Mobile Security Project | Project About}}&lt;br /&gt;
&lt;br /&gt;
==== For Security Testers ====&lt;br /&gt;
{{:Projects/OWASP Mobile Security Project - Security Testers | Security Testers}}&lt;br /&gt;
&lt;br /&gt;
==== Secure Development Guidelines ====&lt;br /&gt;
{{:Projects/OWASP Mobile Security Project - Secure Development Guidelines | Secure Development Guidelines}}&lt;br /&gt;
&lt;br /&gt;
==== Top Ten Mobile Risks ====&lt;br /&gt;
{{:Projects/OWASP Mobile Security Project - Top Ten Mobile Risks | Top Ten Mobile Risks}}&lt;br /&gt;
&lt;br /&gt;
==== Top Ten Mobile Controls ====&lt;br /&gt;
{{:Projects/OWASP Mobile Security Project - Top Ten Mobile Controls | Top Ten Mobile Controls And Design Principles}}&lt;br /&gt;
&lt;br /&gt;
==== Mobile Platforms ====&lt;br /&gt;
{{:Projects/OWASP Mobile Security Project - Mobile Platforms | Mobile Platforms}}&lt;br /&gt;
&lt;br /&gt;
==== Mobile Threat Model ====&lt;br /&gt;
{{:Projects/OWASP Mobile Security Project - Mobile Threat Model | Mobile Threat Model}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP_Project|Mobile Security Project]] [[Category:OWASP_Document]] [[Category:OWASP_Alpha_Quality_Document|OWASP Alpha Quality Document]]&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Mobile_Security_Project&amp;diff=110541</id>
		<title>OWASP Mobile Security Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Mobile_Security_Project&amp;diff=110541"/>
				<updated>2011-05-17T09:48:54Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Main ====&lt;br /&gt;
{{:Projects/OWASP Mobile Security Project | Project About}}&lt;br /&gt;
&lt;br /&gt;
==== For Security Testers ====&lt;br /&gt;
{{:Projects/OWASP Mobile Security Project - Security Testers | Security Testers}}&lt;br /&gt;
&lt;br /&gt;
==== Secure Development Guidelines ====&lt;br /&gt;
{{:Projects/OWASP Mobile Security Project - Secure Development Guidelines | Secure Development Guidelines}}&lt;br /&gt;
&lt;br /&gt;
==== Top Ten Mobile Risks ====&lt;br /&gt;
{{:Projects/OWASP Mobile Security Project - Top Ten Mobile Risks | Top Ten Mobile Risks}}&lt;br /&gt;
&lt;br /&gt;
==== Top Ten Mobile Controls ====&lt;br /&gt;
{{:Projects/OWASP Mobile Security Project - Top Ten Mobile Controls And Design Principles| Top Ten Mobile Controls}}&lt;br /&gt;
&lt;br /&gt;
==== Mobile Platforms ====&lt;br /&gt;
{{:Projects/OWASP Mobile Security Project - Mobile Platforms | Mobile Platforms}}&lt;br /&gt;
&lt;br /&gt;
==== Mobile Threat Model ====&lt;br /&gt;
{{:Projects/OWASP Mobile Security Project - Mobile Threat Model | Mobile Threat Model}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP_Project|Mobile Security Project]] [[Category:OWASP_Document]] [[Category:OWASP_Alpha_Quality_Document|OWASP Alpha Quality Document]]&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=110540</id>
		<title>Projects/OWASP Mobile Security Project - Top Ten Mobile Controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Controls&amp;diff=110540"/>
				<updated>2011-05-17T09:45:58Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Top 10 mobile controls */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Top 10 mobile controls and design principles==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1. Identify and protect sensitive data on the mobile device'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Mobile devices (being mobile) have a higher risk of getting lost, stolen. And it is trivial to Jailbreak or root the device once someone has physical possession of the device. Adequate protection be built to minimize the loss of sensitive data on device.&lt;br /&gt;
&lt;br /&gt;
** In the design phase analyze what data is sensitive and needs to be protected and apply appropriate controls (user personal/privacy data, password credentials etc.).&lt;br /&gt;
** Store sensitive data on the server instead of client-end  device, if possible.&lt;br /&gt;
**Leverage the encryption and key-store mechanism provided by the mobile OS/hardware to secure sensitive data. In case no good key management is available on the client-end, storing keys on the server side could be considered.&lt;br /&gt;
**Do not store/cache sensitive data on the removable media&lt;br /&gt;
**Use only protected temp/cache directories (Do not store temp/cached data in a world readable directory)&lt;br /&gt;
** Automatically delete data from device which is no longer required &lt;br /&gt;
** Be aware of caches and temporary storage as a possible leakage channel&lt;br /&gt;
**Managed devices should leverage remote wipe and kill switch to remove sensitive information from the device&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''2. Handle password credentials securely  on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': User's password credentials if stolen not only provides unauthorized access to the mobile backend service but potentially many other services/accounts used by the user. Since a majority of the users  reuse their passwords (http://www.pcworld.com/article/188763/too_many_people_reuse_logins_study_finds.html )&lt;br /&gt;
&lt;br /&gt;
**Instead of passwords consider using longer term tokens that can be securely stored on the device (OAuth). Tokens can be issued by the backend service after verifying the user credentials initially. And the tokens could be time bound to the specific service, minimizing the damage in loss scenarios. &lt;br /&gt;
**In case passwords needs to stored on the device leverage the encryption and key-store mechanism provided by the mobile OS/hardware to securely store password credentials&lt;br /&gt;
**Provide mechanism to the mobile user to change/remove passwords on the device&lt;br /&gt;
**Password credentials should be marked to avoid being copied to backups &lt;br /&gt;
**Ensure passwords are not visible in cache or logs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''3. Ensure sensitive data is protected in transit''' &lt;br /&gt;
&lt;br /&gt;
'''Risk''': Majority of the smartphones are capable of using multiple transport carriers including Wifi, provider network(3G, GSM,..), bluetooth. Sensitive data passing through insecure channels could be intercepted.&lt;br /&gt;
&lt;br /&gt;
**Protecting Data in transit (assume the worst case, user sitting in a public unprotected wifi )&lt;br /&gt;
**Applications should ensure that a secure channel (such as SSL/TLS) is established end-end when sending sensitive information on wire/air. (Do not assume transport encryption)&lt;br /&gt;
**To reduce the risk of man-in-middle (like SSL proxy), secure connection should only be established  after verifying the credentials of remote end-point (server). This can be achieved by ensuring that SSL is only established with the end points having the trusted certificates in key chain. &lt;br /&gt;
**Do not disable or ignore the SSL chain validation.  &lt;br /&gt;
**SMS, MMS or notifications should not be used to send sensitive data to mobile end points&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'''4. Keep the back-end API and mobile platform secure'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. Insecure implementation of backend APIs or services, and not keeping the back-end platform hardened/patched will allow bad guys to directly attack/compromise the back-ends.&lt;br /&gt;
&lt;br /&gt;
**Web Services/ SOAP/ REST , security best practices (placeholder)&lt;br /&gt;
** Input validation&lt;br /&gt;
** Do not use a generic  shared secret for integration to backend (like embedded password in code)&lt;br /&gt;
**Use authentication that ties back to the end user identity (rather than the device identity)&lt;br /&gt;
**Ensure authorization controls are done correctly in the backend APIs.&lt;br /&gt;
**Ensure that the backend platform is running on a hardened configuration with latest security patches&lt;br /&gt;
**Employ rate limiting and throttling, test for DDoS vulnerabilities&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''5. Implement user authentication/authorization and session management  correctly'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Majority of the mobile applications interact with the backend APIs using REST/Web Services or other proprietary protocols. It is important to ensure that the session management is done correctly after the initial authentication.&lt;br /&gt;
&lt;br /&gt;
**User authentication must be based on user's credentials.&lt;br /&gt;
**Use unpredictable session identifier with high entropy&lt;br /&gt;
**Do not use device id (UDID or IMEI) as the only session identifier. Device Id is easy to spoof.  (Device Id could be used as an additional check or stronger validation that the request is originating from the known device)&lt;br /&gt;
**Session tokens can be cached using the operating system features to encrypt while in storage on device (e.g. Keychains). &lt;br /&gt;
** Device cert can be used for stronger device identity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''6. Ensure strong vulnerability and patch management in place'''&lt;br /&gt;
&lt;br /&gt;
**All the back-end APIs (WebServices/REST) for mobile apps must be tested for vulnerabilities periodically.&lt;br /&gt;
** Developers should use static code analyzer tools and fuzzing tools for testing and finding security flaws.&lt;br /&gt;
**Applications must be designed and provisioned to allow updates for security patches.&lt;br /&gt;
**Application team is responsible for tracking all third party frameworks/APIs used in the mobile application for security patches. A corresponding security update must be done for the mobile application using these third party APIs/frameworks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''7. Employ the secure coding/development practices'''&lt;br /&gt;
&lt;br /&gt;
** Input Validation and Output Encoding&lt;br /&gt;
**Vet the security/authenticity of any third party code/libraries used in your mobile application ( reliable source, supported, no backend Trojans, licensing)&lt;br /&gt;
**Avoid opening application specific server sockets (listener ports) on the client device. Use the communication mechanisms provided by the OS.&lt;br /&gt;
**Code signing for some mobile platforms allows inherent trust between applications (with same code signatures), installed on the same mobile device. Plan code signing mechanisms properly.&lt;br /&gt;
**Leverage static and binary code analyzers to find security flaws.&lt;br /&gt;
** Use safe string function, avoid buffer and Integer overflow&lt;br /&gt;
**Context aware security: may be able to decrease/increase access based on the context (e.g. location, network)&lt;br /&gt;
**For applications using JNI (Android) using a third party validation to ensure no vulnerabilities.&lt;br /&gt;
**Remove all test code before releasing the application&lt;br /&gt;
**Ensure logging is done appropriately in the released application. No excessive logging, no sensitive user information in log files&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''8. Perform data integration with third party backend applications correctly'''&lt;br /&gt;
&lt;br /&gt;
** User informed if any personal data is collected or sent &lt;br /&gt;
**No sensitive or user personal data is sent or shared with a third party/social site without prior approval and knowledge of the user.&lt;br /&gt;
**Validate all data received from the non-trusted third party before processing in the application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''9. Run the mobile client using minimal permission''' &lt;br /&gt;
&lt;br /&gt;
**Run with the minimum privilege required for the application on the operating system. &lt;br /&gt;
**Don't authorize code/app to execute with root privilege&lt;br /&gt;
**Always perform testing as a standard user (rather than a privileged user)&lt;br /&gt;
**Least privilege. Be aware of privileges granted by default by API's and disable them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''10. Enforce higher  security posture on the device for sensitive apps''' &lt;br /&gt;
&lt;br /&gt;
**If a sensitive application needs to be provisioned on a device, application can employ enforcement of the  certain security posture on the device (such as PIN, remote management/wipe)&lt;br /&gt;
** Enterprise applications can employ this principle of doing a security posture check before deployment of sensitive enterprise applications&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Candidates (to be merged if needed) ===&lt;br /&gt;
&lt;br /&gt;
'''11. No secrets in code/binary'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': Mobile application binaries can be easily reverse engineered.&lt;br /&gt;
&lt;br /&gt;
**Do not store any passwords or secrets in the application binary &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''12. Protect your application from other malicious applications on the device'''&lt;br /&gt;
&lt;br /&gt;
'''Risk''': User's are prone to install applications that look cool (may be malicious) and can transmit data about user (or stored data) for malicious purpose.&lt;br /&gt;
&lt;br /&gt;
**(?? What guidelines could be provided to developers)&lt;br /&gt;
**User education on using due diligence while installing third party applications on mobile devices &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Original list (kept for review) ===&lt;br /&gt;
# Protect data at rest&lt;br /&gt;
# Protect data in transport&lt;br /&gt;
# Multi-factor authentication&lt;br /&gt;
# Session management&lt;br /&gt;
# Least privilege access control&lt;br /&gt;
# Untrusted data validation&lt;br /&gt;
# Output encoding&lt;br /&gt;
# Enterprise device management&lt;br /&gt;
# Keep business logic on the server&lt;br /&gt;
# Platform security&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Architecture_and_design_principles&amp;diff=110414</id>
		<title>Architecture and design principles</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Architecture_and_design_principles&amp;diff=110414"/>
				<updated>2011-05-15T09:26:35Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a merge of ENISA, OWASP and Veracode top 10. Note that there is a mixture of threats and vulnerabilities here - we should decide whether to use risks (threats with impact on assets which occur with probability) and vulnerabilities (system flaws which increase the probability of a threat occurring). I have cut those risks/vulnerabilities which cannot be addressed in any way by developers.  We should decide whether to include recommendations in the style of &amp;quot;code of practice&amp;quot;- e.g. activity monitoring should only be used in circumstances xyz... (feel free to restructure)&lt;br /&gt;
&lt;br /&gt;
My recommendation would be to separate out the design principles from the Risks/Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
=='''Mobile Security'''==&lt;br /&gt;
*1. Threats, Risks and Vulnerabilities (Risks)&lt;br /&gt;
*2. Design Principles (As part of the Controls)&lt;br /&gt;
*3. Architectural Patterns  (New)&lt;br /&gt;
*4. Secure Mobile Development/Coding Guidelines&lt;br /&gt;
&lt;br /&gt;
==1. Top Risks/Vulnerabilities==&lt;br /&gt;
&lt;br /&gt;
* Unsafe sensitive data storage&lt;br /&gt;
** Consider the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
** Automatically delete data which is not required (how to know when it's not required?).&lt;br /&gt;
** Securely delete data using standard shredding techniques.&lt;br /&gt;
** Store a minimum of data on the client side device.&lt;br /&gt;
** Securely wipe removable media.&lt;br /&gt;
** Be aware of caches and temporary storage as a possible leakage channel.&lt;br /&gt;
** Implement key and password storage best practice.&lt;br /&gt;
** In the design phase analyse what data needs to be protected most and what doesn't and apply controls at appropriate places.&lt;br /&gt;
&lt;br /&gt;
* Unintentional disclosure of data: The smartphone user unintentionally discloses data on the smartphone.&lt;br /&gt;
** Apply the principle of minimal disclosure - only collect and disclose data which is required for the application (how to know what this is?)&lt;br /&gt;
** Use non-persistent identifiers wherever possible - e.g. do not use the EMEI number as an identifier unless there is a good reason to do so.&lt;br /&gt;
** Apply techniques for the detection of covert channels - e.g. covert flow trees to discover information which may flow through shared resources such as file systems, resource use etc...&lt;br /&gt;
** Carefully control what data which is stored in public stores such as address book, media gallery etc... including metadata.&lt;br /&gt;
** Obtain user explicit user consent according to best practice (see implementation guidelines) for collection of personal data.&lt;br /&gt;
&lt;br /&gt;
* Attacks on decommissioned smartphones: The smartphone is decommissioned improperly allowing an attacker access to the data on the device.&lt;br /&gt;
** See first risk&lt;br /&gt;
** Provide a convenient way of resetting access credentials which does not require the device (consider an automated timeout on access credentials).&lt;br /&gt;
** Consider using SIM card as default storage for small but sensitive data such as keys.&lt;br /&gt;
&lt;br /&gt;
* Phishing attacks: An attacker collects user credentials (such as passwords and credit card numbers) by means of fake apps or (SMS, email) messages that seem genuine.&lt;br /&gt;
** Provide appropriate trust cues for linking to unknown third party applications.&lt;br /&gt;
** Do not train users to follow untrusted paths.&lt;br /&gt;
** Provide a reporting channel for phishing from apps (e.g. if you are a browser plugin developer).&lt;br /&gt;
&lt;br /&gt;
* Spyware:  Spyware covers untargeted collection of personal information as opposed to targeted surveillance.&lt;br /&gt;
&lt;br /&gt;
* Network Spoofing Attacks: An attacker deploys a rogue network access point (WiFi or GSM) and users connect to it. The attacker subsequently intercepts (or tampers with) the user communication to carry out further attacks such as phishing.&lt;br /&gt;
** Use the GSM encryption-on indicator to detect and signal downgrade attacks.&lt;br /&gt;
&lt;br /&gt;
* Surveillance attacks: An attacker keeps a specific user under surveillance through the target user’s smartphone.&lt;br /&gt;
**  Don't use 3rd party code without carefully verifying&lt;br /&gt;
* Diallerware attacks: An attacker steals money from the user by means of malware that makes hidden use of premium SMS services or numbers.&lt;br /&gt;
* Financial malware attacks The smartphone is infected with malware specifically designed for stealing credit card numbers, online banking credentials or subverting online banking or ecommerce transactions.&lt;br /&gt;
* Network congestion 	Network resource overload due to smartphone usage leading to network unavailability for the end-user.&lt;br /&gt;
** Note that this relies a lot on smart developers because a lot of the congestion is due to signalling overload. Could we make some recommendations on detecting idle/focus so that the app knows when it really needs to be connected to the network?&lt;br /&gt;
* Unauthorized network connectivity (exfiltration or command &amp;amp; control)&lt;br /&gt;
* UI Impersonation&lt;br /&gt;
* System modification (rootkit, APN proxy config)&lt;br /&gt;
** Validate updates and input data from untrusted sources.&lt;br /&gt;
* Logic or Time bomb (including runtime interpreter)&lt;br /&gt;
** Define clearly who should be responsible for updating the application Extensions or plugins e.g. Angry birds Add-ons and installations &lt;br /&gt;
* Unsafe sensitive data transmission&lt;br /&gt;
* Hardcoded password/keys&lt;br /&gt;
* Lack of data protection in transit&lt;br /&gt;
** Don't allow SSL downgrade.&lt;br /&gt;
** Don't trust network infrastructure&lt;br /&gt;
** See Network Spoofing.&lt;br /&gt;
* Client-side injection&lt;br /&gt;
* Client-side DOS&lt;br /&gt;
* Malicious third-party code&lt;br /&gt;
** Follow security best practice for implementation of runtime interpreters (be careful when implementing anything which turns user input into executable code).&lt;br /&gt;
* Client-side buffer overflow&lt;br /&gt;
* Failure to properly handle inbound SMS messages&lt;br /&gt;
** Remove test code from software&lt;br /&gt;
* Failure to properly handle outbound SMS messages&lt;br /&gt;
* Failure to disable insecure platform features in application (caching of keystrokes, screen data)&lt;br /&gt;
** Least privilege. Be aware of privileges granted by default by API's and disable them.&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Architecture_and_design_principles&amp;diff=110398</id>
		<title>Architecture and design principles</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Architecture_and_design_principles&amp;diff=110398"/>
				<updated>2011-05-14T15:48:15Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a merge of ENISA, OWASP and Veracode top 10. Note that there is a mixture of threats and vulnerabilities here - we should decide whether to use risks (threats with impact on assets which occur with probability) and vulnerabilities (system flaws which increase the probability of a threat occurring). I have cut those risks/vulnerabilities which cannot be addressed in any way by developers.  We should decide whether to include recommendations in the style of &amp;quot;code of practice&amp;quot;- e.g. activity monitoring should only be used in circumstances xyz... (feel free to restructure)&lt;br /&gt;
&lt;br /&gt;
My recommendation would be to separate out the design principles from the Risks/Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
=='''Mobile Security'''==&lt;br /&gt;
*1. Threats, Risks and Vulnerabilities&lt;br /&gt;
*2. Design Principles&lt;br /&gt;
*3. Architectural Patterns  &lt;br /&gt;
*4. Secure Mobile Development/Coding Guidelines&lt;br /&gt;
&lt;br /&gt;
==1. Top Risks/Vulnerabilities==&lt;br /&gt;
&lt;br /&gt;
* Unsafe sensitive data storage&lt;br /&gt;
** Consider the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
** Automatically delete data which is not required (how to know when it's not required?).&lt;br /&gt;
** Securely delete data using standard shredding techniques.&lt;br /&gt;
** Store a minimum of data on the client side device.&lt;br /&gt;
** Securely wipe removable media.&lt;br /&gt;
** Be aware of caches and temporary storage as a possible leakage channel.&lt;br /&gt;
** Implement key and password storage best practice.&lt;br /&gt;
** In the design phase analyse what data needs to be protected most and what doesn't and apply controls at appropriate places.&lt;br /&gt;
&lt;br /&gt;
* Unintentional disclosure of data: The smartphone user unintentionally discloses data on the smartphone.&lt;br /&gt;
** Apply the principle of minimal disclosure - only collect and disclose data which is required for the application (how to know what this is?)&lt;br /&gt;
** Use non-persistent identifiers wherever possible - e.g. do not use the EMEI number as an identifier unless there is a good reason to do so.&lt;br /&gt;
** Apply techniques for the detection of covert channels - e.g. covert flow trees to discover information which may flow through shared resources such as file systems, resource use etc...&lt;br /&gt;
** Carefully control what data which is stored in public stores such as address book, media gallery etc... including metadata.&lt;br /&gt;
** Obtain user explicit user consent according to best practice (see implementation guidelines) for collection of personal data.&lt;br /&gt;
&lt;br /&gt;
* Attacks on decommissioned smartphones: The smartphone is decommissioned improperly allowing an attacker access to the data on the device.&lt;br /&gt;
** See first risk&lt;br /&gt;
** Provide a convenient way of resetting access credentials which does not require the device (consider an automated timeout on access credentials).&lt;br /&gt;
** Consider using SIM card as default storage for small but sensitive data such as keys.&lt;br /&gt;
&lt;br /&gt;
* Phishing attacks: An attacker collects user credentials (such as passwords and credit card numbers) by means of fake apps or (SMS, email) messages that seem genuine.&lt;br /&gt;
** Provide appropriate trust cues for linking to unknown third party applications.&lt;br /&gt;
** Do not train users to follow untrusted paths.&lt;br /&gt;
** Provide a reporting channel for phishing from apps (e.g. if you are a browser plugin developer).&lt;br /&gt;
&lt;br /&gt;
* Spyware:  Spyware covers untargeted collection of personal information as opposed to targeted surveillance.&lt;br /&gt;
&lt;br /&gt;
* Network Spoofing Attacks: An attacker deploys a rogue network access point (WiFi or GSM) and users connect to it. The attacker subsequently intercepts (or tampers with) the user communication to carry out further attacks such as phishing.&lt;br /&gt;
** Use the GSM encryption-on indicator to detect and signal downgrade attacks.&lt;br /&gt;
&lt;br /&gt;
* Surveillance attacks: An attacker keeps a specific user under surveillance through the target user’s smartphone.&lt;br /&gt;
**  Don't use 3rd party code without carefully verifying&lt;br /&gt;
* Diallerware attacks: An attacker steals money from the user by means of malware that makes hidden use of premium SMS services or numbers.&lt;br /&gt;
* Financial malware attacks The smartphone is infected with malware specifically designed for stealing credit card numbers, online banking credentials or subverting online banking or ecommerce transactions.&lt;br /&gt;
* Network congestion 	Network resource overload due to smartphone usage leading to network unavailability for the end-user.&lt;br /&gt;
** Note that this relies a lot on smart developers because a lot of the congestion is due to signalling overload. Could we make some recommendations on detecting idle/focus so that the app knows when it really needs to be connected to the network?&lt;br /&gt;
* Unauthorized network connectivity (exfiltration or command &amp;amp; control)&lt;br /&gt;
* UI Impersonation&lt;br /&gt;
* System modification (rootkit, APN proxy config)&lt;br /&gt;
** Validate updates and input data from untrusted sources.&lt;br /&gt;
* Logic or Time bomb (including runtime interpreter)&lt;br /&gt;
** Define clearly who should be responsible for updating the application Extensions or plugins e.g. Angry birds Add-ons and installations &lt;br /&gt;
* Unsafe sensitive data transmission&lt;br /&gt;
* Hardcoded password/keys&lt;br /&gt;
* Lack of data protection in transit&lt;br /&gt;
** Don't allow SSL downgrade.&lt;br /&gt;
** Don't trust network infrastructure&lt;br /&gt;
** See Network Spoofing.&lt;br /&gt;
* Client-side injection&lt;br /&gt;
* Client-side DOS&lt;br /&gt;
* Malicious third-party code&lt;br /&gt;
** Follow security best practice for implementation of runtime interpreters (be careful when implementing anything which turns user input into executable code).&lt;br /&gt;
* Client-side buffer overflow&lt;br /&gt;
* Failure to properly handle inbound SMS messages&lt;br /&gt;
** Remove test code from software&lt;br /&gt;
* Failure to properly handle outbound SMS messages&lt;br /&gt;
* Failure to disable insecure platform features in application (caching of keystrokes, screen data)&lt;br /&gt;
** Least privilege. Be aware of privileges granted by default by API's and disable them.&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Architecture_and_design_principles&amp;diff=110397</id>
		<title>Architecture and design principles</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Architecture_and_design_principles&amp;diff=110397"/>
				<updated>2011-05-14T15:46:51Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is a merge of ENISA, OWASP and Veracode top 10. Note that there is a mixture of threats and vulnerabilities here - we should decide whether to use risks (threats with impact on assets which occur with probability) and vulnerabilities (system flaws which increase the probability of a threat occurring). I have cut those risks/vulnerabilities which cannot be addressed in any way by developers.  We should decide whether to include recommendations in the style of &amp;quot;code of practice&amp;quot;- e.g. activity monitoring should only be used in circumstances xyz... (feel free to restructure)&lt;br /&gt;
&lt;br /&gt;
My recommendation would be to separate out the design principles from the Risks/Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
=='''Mobile Security'''==&lt;br /&gt;
*1. Threats, Risks and Vulnerabilities&lt;br /&gt;
*2. Design Principles&lt;br /&gt;
*3. Architectural Patterns  &lt;br /&gt;
*4. Secure Mobile Development Guidelines&lt;br /&gt;
&lt;br /&gt;
==1. Top Risks/Vulnerabilities==&lt;br /&gt;
&lt;br /&gt;
* Unsafe sensitive data storage&lt;br /&gt;
** Consider the whole data lifecycle in writing your application (collection over the wire, temporary storage, caching, backup, deletion etc...)&lt;br /&gt;
** Automatically delete data which is not required (how to know when it's not required?).&lt;br /&gt;
** Securely delete data using standard shredding techniques.&lt;br /&gt;
** Store a minimum of data on the client side device.&lt;br /&gt;
** Securely wipe removable media.&lt;br /&gt;
** Be aware of caches and temporary storage as a possible leakage channel.&lt;br /&gt;
** Implement key and password storage best practice.&lt;br /&gt;
** In the design phase analyse what data needs to be protected most and what doesn't and apply controls at appropriate places.&lt;br /&gt;
&lt;br /&gt;
* Unintentional disclosure of data: The smartphone user unintentionally discloses data on the smartphone.&lt;br /&gt;
** Apply the principle of minimal disclosure - only collect and disclose data which is required for the application (how to know what this is?)&lt;br /&gt;
** Use non-persistent identifiers wherever possible - e.g. do not use the EMEI number as an identifier unless there is a good reason to do so.&lt;br /&gt;
** Apply techniques for the detection of covert channels - e.g. covert flow trees to discover information which may flow through shared resources such as file systems, resource use etc...&lt;br /&gt;
** Carefully control what data which is stored in public stores such as address book, media gallery etc... including metadata.&lt;br /&gt;
** Obtain user explicit user consent according to best practice (see implementation guidelines) for collection of personal data.&lt;br /&gt;
&lt;br /&gt;
* Attacks on decommissioned smartphones: The smartphone is decommissioned improperly allowing an attacker access to the data on the device.&lt;br /&gt;
** See first risk&lt;br /&gt;
** Provide a convenient way of resetting access credentials which does not require the device (consider an automated timeout on access credentials).&lt;br /&gt;
** Consider using SIM card as default storage for small but sensitive data such as keys.&lt;br /&gt;
&lt;br /&gt;
* Phishing attacks: An attacker collects user credentials (such as passwords and credit card numbers) by means of fake apps or (SMS, email) messages that seem genuine.&lt;br /&gt;
** Provide appropriate trust cues for linking to unknown third party applications.&lt;br /&gt;
** Do not train users to follow untrusted paths.&lt;br /&gt;
** Provide a reporting channel for phishing from apps (e.g. if you are a browser plugin developer).&lt;br /&gt;
&lt;br /&gt;
* Spyware:  Spyware covers untargeted collection of personal information as opposed to targeted surveillance.&lt;br /&gt;
&lt;br /&gt;
* Network Spoofing Attacks: An attacker deploys a rogue network access point (WiFi or GSM) and users connect to it. The attacker subsequently intercepts (or tampers with) the user communication to carry out further attacks such as phishing.&lt;br /&gt;
** Use the GSM encryption-on indicator to detect and signal downgrade attacks.&lt;br /&gt;
&lt;br /&gt;
* Surveillance attacks: An attacker keeps a specific user under surveillance through the target user’s smartphone.&lt;br /&gt;
**  Don't use 3rd party code without carefully verifying&lt;br /&gt;
* Diallerware attacks: An attacker steals money from the user by means of malware that makes hidden use of premium SMS services or numbers.&lt;br /&gt;
* Financial malware attacks The smartphone is infected with malware specifically designed for stealing credit card numbers, online banking credentials or subverting online banking or ecommerce transactions.&lt;br /&gt;
* Network congestion 	Network resource overload due to smartphone usage leading to network unavailability for the end-user.&lt;br /&gt;
** Note that this relies a lot on smart developers because a lot of the congestion is due to signalling overload. Could we make some recommendations on detecting idle/focus so that the app knows when it really needs to be connected to the network?&lt;br /&gt;
* Unauthorized network connectivity (exfiltration or command &amp;amp; control)&lt;br /&gt;
* UI Impersonation&lt;br /&gt;
* System modification (rootkit, APN proxy config)&lt;br /&gt;
** Validate updates and input data from untrusted sources.&lt;br /&gt;
* Logic or Time bomb (including runtime interpreter)&lt;br /&gt;
** Define clearly who should be responsible for updating the application Extensions or plugins e.g. Angry birds Add-ons and installations &lt;br /&gt;
* Unsafe sensitive data transmission&lt;br /&gt;
* Hardcoded password/keys&lt;br /&gt;
* Lack of data protection in transit&lt;br /&gt;
** Don't allow SSL downgrade.&lt;br /&gt;
** Don't trust network infrastructure&lt;br /&gt;
** See Network Spoofing.&lt;br /&gt;
* Client-side injection&lt;br /&gt;
* Client-side DOS&lt;br /&gt;
* Malicious third-party code&lt;br /&gt;
** Follow security best practice for implementation of runtime interpreters (be careful when implementing anything which turns user input into executable code).&lt;br /&gt;
* Client-side buffer overflow&lt;br /&gt;
* Failure to properly handle inbound SMS messages&lt;br /&gt;
** Remove test code from software&lt;br /&gt;
* Failure to properly handle outbound SMS messages&lt;br /&gt;
* Failure to disable insecure platform features in application (caching of keystrokes, screen data)&lt;br /&gt;
** Least privilege. Be aware of privileges granted by default by API's and disable them.&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project&amp;diff=106695</id>
		<title>Projects/OWASP Mobile Security Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Projects/OWASP_Mobile_Security_Project&amp;diff=106695"/>
				<updated>2011-03-11T19:40:53Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Project About&lt;br /&gt;
| project_name = OWASP Mobile Security Project&lt;br /&gt;
| project_home_page = OWASP_Mobile_Security_Project&lt;br /&gt;
| project_description = &lt;br /&gt;
The rapid growth of mobile computing has made the need for secure mobile development absolutely essential.  The OWASP Mobile Security Project will help the community better understand the risks present in mobile applications, and learn to defend against them. This project will be forked into each of the following platforms:&lt;br /&gt;
* iOS Project&lt;br /&gt;
* Android Project&lt;br /&gt;
* webOS Project&lt;br /&gt;
* Windows Mobile Project&lt;br /&gt;
* Blackberry Project&lt;br /&gt;
   &lt;br /&gt;
| project_license =&lt;br /&gt;
&lt;br /&gt;
| leader_name1 = Jack Mannino &lt;br /&gt;
| leader_email1 = Jack@nvisiumsecurity.com&lt;br /&gt;
| leader_username1 = Jack Mannino&lt;br /&gt;
&lt;br /&gt;
| leader_name2 = Mike Zusman&lt;br /&gt;
| leader_email2 = mike.zusman@intrepidusgroup.com&lt;br /&gt;
| leader_username2 = schmoilito&lt;br /&gt;
&lt;br /&gt;
| contributor_name2 = Jim Manico&lt;br /&gt;
| contributor_email2 = jim.manico@owasp.org&lt;br /&gt;
| contributor_username2= jmanico&lt;br /&gt;
&lt;br /&gt;
| contributor_name1 = David Lindner&lt;br /&gt;
| contributor_email1 = david.lindner@aspectsecurity.com&lt;br /&gt;
| contributor_username1 = David Lindner&lt;br /&gt;
&lt;br /&gt;
| contributor_name3 = Tom Neaves&lt;br /&gt;
| contributor_email3 = tom.neaves@verizonbusiness.com&lt;br /&gt;
| contributor_username3 = Tom Neaves&lt;br /&gt;
&lt;br /&gt;
| contributor_name4 = Kuai Hinojosa&lt;br /&gt;
| contributor_email4 = Kuai.Hinojosa@owasp.org&lt;br /&gt;
| contributor_username4 = Kuai Hinojosa&lt;br /&gt;
&lt;br /&gt;
| contributor_name5 = Vinay Bansal&lt;br /&gt;
| contributor_email5 = vinay.bansal@cisco.com&lt;br /&gt;
| contributor_username5 =  Vinay Bansal&lt;br /&gt;
&lt;br /&gt;
| pamphlet_link = &lt;br /&gt;
&lt;br /&gt;
| presentation_link =&lt;br /&gt;
&lt;br /&gt;
| mailing_list_name = https://lists.owasp.org/mailman/listinfo/owasp-mobile-security-project&lt;br /&gt;
&lt;br /&gt;
| project_road_map = http://www.owasp.org/index.php/Projects/OWASP_Mobile_Security_Project/Roadmap&lt;br /&gt;
&lt;br /&gt;
| links_url[1-10] = &lt;br /&gt;
&lt;br /&gt;
| links_name[1-10] = &lt;br /&gt;
&lt;br /&gt;
| release_1 = &lt;br /&gt;
| release_2 = &lt;br /&gt;
| release_3 =&lt;br /&gt;
| release_4 =&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_Cloud_%E2%80%90_10_Project&amp;diff=91994</id>
		<title>Category:OWASP Cloud ‐ 10 Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_Cloud_%E2%80%90_10_Project&amp;diff=91994"/>
				<updated>2010-10-26T16:56:02Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Audience */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== Main  ====&lt;br /&gt;
&lt;br /&gt;
== Cloud Top 10 Security Risks ==&lt;br /&gt;
&lt;br /&gt;
== Goal  ==&lt;br /&gt;
&lt;br /&gt;
According to Gartner, by 2012, 20% of businesses will adopt cloud services and own no IT assets. Goal of the project is to maintain a list of top 10 security risks faced with the Cloud* Computing and SaaS Models. List will be maintained by input from community, security experts and security incidences at cloud/SaaS providers.&lt;br /&gt;
&lt;br /&gt;
* Most of the risks are based on the assumption that Cloud is a public or a hybrid cloud&lt;br /&gt;
&lt;br /&gt;
== Audience  ==&lt;br /&gt;
&lt;br /&gt;
Audience for the project will be organizations planning on leveraging external cloud environment to host their applications or rent application in a SaaS model (Software as a Service). Aim of the &amp;quot;OWASP Cloud-10&amp;quot; list is to help balance security risks with the cost advantage that the Cloud and SaaS model provides. We expect the Cloud and SaaS providers to be indirect audience for &amp;quot;OWASP Cloud-10&amp;quot;, when they try to showcase their security controls to potential customers against this list.&lt;br /&gt;
&lt;br /&gt;
Also refer the recent presentation - http://www.owasp.org/images/4/47/Cloud-Top10-Security-Risks.pdf&lt;br /&gt;
&lt;br /&gt;
== Initial pre-alpha list of OWASP Cloud Top 10 Security Risks  ==&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;2&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.owasp.org/index.php/Cloud-10_Accountability_and_Data_Ownership R1 - Accountability and Data Ownership]&lt;br /&gt;
| A traditional data center of an organization is under complete control of that organization. The organization logically and physically protects the data it owns. An organization that chooses to use a public cloud for hosting its business service loses control of its data. This poses critical security risks that the organization needs to carefully consider and mitigate. (Pankaj, Vinay)&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.owasp.org/index.php/Cloud-10_User_Identity_Federation R2 - User Identity Federation]&lt;br /&gt;
| It is very important for the enterprises to keep control over user identities as they move services and applications to the different cloud providers. Rather than letting cloud providers create multiple islands of identities that become too complex to manage down the line. Users should be uniquely identifiable with a federated authentication (e.g. SAML) that works across the cloud providers. User experience is enhanced when he/she does not manage multiple userids and credentials. This allows easier back-end data integrations between cloud provides.   (Vinay, Pankaj)&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.owasp.org/index.php/Cloud-10_Regulatory_Compliance R3 - Regulatory Compliance]&lt;br /&gt;
|  - Complex to Demonstrate regulatory compliance. Data that is perceived to be secure in one country may not be perceived secure in another due to different regulatory laws across countries or regions. For eg., European Union has very strict privacy laws and hence data stored in US may not comply with those EU laws. (Shankar, Ove)&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.owasp.org/index.php/Cloud-10_Business_Continuity_and_Resiliency R4 - Business Continuity and Resiliency] &lt;br /&gt;
| Business Continuity is an activity an IT organization performs to ensure that the business can be conducted in a disaster situation. In case of an organization that uses cloud, the responsibility of business continuity gets delegated to the cloud provider. This creates a risk to the organization of not having appropriate business continuity. (Pankaj, Shankar)&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.owasp.org/index.php/Cloud-10_User_Privacy_and_Secondary_Usage_of_Data R5 - User Privacy and Secondary Usage of Data]&lt;br /&gt;
|  User's personal data gets stored in the cloud as users start using social web sites. Most of the social sites are vague about how they will handle users personal data. Additionally most of the social sites go with the default share all (least restrictive) setup for the user. E.g. via LinkedIn, Twitter, Facebook it is very easy to deduct personal details of the users  (Vinay) - Need to ensure with your cloud providers what data can or cannot be used by them for secondary purposes. It includes data that can be mined directly from user data by providers or indirectly based on user behavior (clicks, incoming outgoing URLs etc.). Many social application providers mine user data for secondary usage e.g. directed advertising. No wonder when many of us use their personal gmail/hotmail or yahoo account to tell a friend your vacation plans and immediately you start seeing advertisements on hotels/flights near your destination.  (Vinay, Ove)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.owasp.org/index.php/Cloud-10_Service_and_Data_Integration R6 - Service and Data Integration] &lt;br /&gt;
| Organizations must be sure that their proprietary data is adequately protected as it is transferred between the end user and the cloud data center. While interception of data in transit should be of concern to every organization, the risk is much greater for organizations utilizing a cloud computing model, where data is transmitted over the Internet. Unsecured data is susceptible to interception and compromise during transmission. (Shankar, Ove)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.owasp.org/index.php/Cloud-10_Multi_Tenancy_and_Physical_Security R7 - Multi Tenancy and Physical Security] &lt;br /&gt;
| Multi-tenancy in cloud means sharing of resources and services among multiple clients(CPU, networking, storage/databases, application stack). It increases dependence on logical segregation and other controls to ensure that one tenant deliberately or inadvertently can not interfere with the security ( confidentiality, integrity, availability) of the other tenants. (Vinay, Pankaj)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.owasp.org/index.php/Cloud-10_Incidence_Analysis_and_Forensic_Support R8 - Incidence Analysis and Forensic Support]&lt;br /&gt;
|In the event of a security incident, applications and services hosted at a cloud provider are difficult to investigate as logging may be distributed across multiple hosts and data centers which could be located in various countries and hence governed by different laws. Also, along with log files, data belonging to multiple customers may be co-located on the same hardware and storage devices and hence a concern for law enforcing agencies for forensic recovery.  (Shankar, Ove)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.owasp.org/index.php/Cloud-10_Infrastructure_Security R9 - Infrastructure Security]&lt;br /&gt;
| All infrastructure must be hardened and configured securely, and the hardening/configuration baselines should be based on Industry Best Practices. Applications, systems and networks must be architected and configured with tiering and security zones, and access must be configured to only allow required network and application protocols. Administrative access must be role-based, and granted on a need-to-know basis. Regular risk assessments must be done, preferably by an independent party. A policy and process must be in place for patching/security updates, and can based on risk/threat assessments of new security issues. (Ove, Shankar)&lt;br /&gt;
&lt;br /&gt;
Although the fine details of the items above must be regarded as highly sensitive information, it is reasonable to expect a customer to want to see at least the high-level details. The Provider must be willing to provide this. &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.owasp.org/index.php/Cloud-10_Nonproduction_Environment_Exposure R10 - Non Production Environment Exposure] &lt;br /&gt;
| An IT organization that develops software applications internally employs a set of non-production environments for design, development, and test activities. The non-production environments are generally not secured to the same extent as the production environment. If an organization uses a cloud provider for such non-production environment, then there is a high risk of unauthorized access, information modification, and information theft. (Pankaj, Ove)&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;center&amp;gt;Table 1: Top 10 Cloud - Security Risks&amp;lt;/center&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
== Other OWASP Cloud-10 Candidates  ==&lt;br /&gt;
&lt;br /&gt;
* exposure to non-prod and internal environments &lt;br /&gt;
*Integration between cloud and internally hosted services &lt;br /&gt;
*Patching and Vulnerability Management &lt;br /&gt;
*Lack of Transparency in Internal Security Controls and difficulty/complexity of auditing &lt;br /&gt;
*Enterprise Intranets exposed directly on Internet (if they move on a Public Cloud)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; This needs to be debated and for each of these we may need to add a separate page-holder with the following details. &lt;br /&gt;
&lt;br /&gt;
*Various Risk Scenarios &lt;br /&gt;
*Real World Examples &lt;br /&gt;
*Possible Mitigation and Security Controls &lt;br /&gt;
*Reference to any related Incident&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Roadmap (Status)  ====&lt;br /&gt;
&lt;br /&gt;
== Managing OWASP Cloud-10 List (Pre-Alpha)  ==&lt;br /&gt;
&lt;br /&gt;
“OWASP Cloud-10” list will be maintained by input from, community, security experts and security incidences at cloud/SaaS providers. &lt;br /&gt;
&lt;br /&gt;
Each of the identified risk in &amp;quot;OWASP Cloud-10&amp;quot; will provide details on: &lt;br /&gt;
&lt;br /&gt;
*Various Risk Scenarios &lt;br /&gt;
*Real World Examples &lt;br /&gt;
*Possible Mitigations and Security Controls &lt;br /&gt;
*Reference to any related Incident&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Risk Criteria:&lt;br /&gt;
&lt;br /&gt;
#Easily Executable&lt;br /&gt;
#Most Damaging&lt;br /&gt;
#Incidence Frequency (Known)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Alpha Release ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#'''Identify and publish a first draft of potential &amp;quot;OWASP Cloud-10&amp;quot; candidates (Dec 2009)''' &lt;br /&gt;
#Ask contributors to collect more data and details on each of the risk item. (till Jan 2010) &lt;br /&gt;
#Get initial community feedback by discussing it in various blogs, discussion forums etc. (Jan-Feb 2010)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta Release  ==&lt;br /&gt;
&lt;br /&gt;
# Writeup to be finished by April 5th (All)&lt;br /&gt;
# Provide feedback by April 19th&lt;br /&gt;
# Incorporate all the comments feedback by 26th April&lt;br /&gt;
# Publish the first (beta) list of &amp;quot;OWASP Cloud-10&amp;quot; (April 3rd 2010) &lt;br /&gt;
#Identify additional candidates &lt;br /&gt;
#……. (repeat steps as in Alpha)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Taxonomy  ====&lt;br /&gt;
&lt;br /&gt;
== Terms ==&lt;br /&gt;
&lt;br /&gt;
== Diagrams ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Reference  ====&lt;br /&gt;
&lt;br /&gt;
== Related Efforts  ==&lt;br /&gt;
&lt;br /&gt;
#Cloud Security Alliance - http://www.cloudsecurityalliance.org/ &lt;br /&gt;
#IDC Aug 2008 Survey (Security #1) Challenge for Cloud/On-Demand Models - http://blogs.idc.com/ie/?p=210&lt;br /&gt;
&lt;br /&gt;
== Related OWASP Projects  ==&lt;br /&gt;
&lt;br /&gt;
#OWASP Top Ten Project &lt;br /&gt;
#OWASP Legal Project&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Contributors  ====&lt;br /&gt;
&lt;br /&gt;
== Project Leaders  ==&lt;br /&gt;
&lt;br /&gt;
[[:User:vinaykbansal|'''Vinay Bansal''']]&lt;br /&gt;
&amp;lt;br&amp;gt;[[User:Shankar Babu Chebrolu|Shankar Babu Chebrolu]]&lt;br /&gt;
&amp;lt;br&amp;gt;[[User:Pankaj Telang|Pankaj Telang]]&lt;br /&gt;
&amp;lt;br&amp;gt;[http://www.owasp.org/index.php/User:Ken_Huang Ken Huang]&lt;br /&gt;
&amp;lt;br&amp;gt;[[User:Ove Hansen|Ove Hansen]]&lt;br /&gt;
&lt;br /&gt;
== Contributors  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
#[https://lists.owasp.org/mailman/listinfo/owasp-cloud-10 Subscribe or read the Cloud-10 mail archives]&lt;br /&gt;
&lt;br /&gt;
==== Project Details  ====&lt;br /&gt;
&lt;br /&gt;
{{:GPC Project Details/OWASP Cloud ‐ 10 Project | OWASP Project Identification Tab}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; __NOTOC__ &amp;lt;headertabs /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:Cloud_-_Top_5_Risks_with_PAAS|&amp;lt;br&amp;gt;]]&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=File:Cloud-Top10-Security-Risks.pdf&amp;diff=91993</id>
		<title>File:Cloud-Top10-Security-Risks.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=File:Cloud-Top10-Security-Risks.pdf&amp;diff=91993"/>
				<updated>2010-10-26T16:48:07Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: Presentation on OWASP Top Ten Cloud Security Risks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Presentation on OWASP Top Ten Cloud Security Risks&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88185</id>
		<title>Cloud-10 Multi Tenancy and Physical Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88185"/>
				<updated>2010-08-30T11:41:00Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Countermeasures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==R7: Multi Tenancy and Physical Security ==&lt;br /&gt;
&lt;br /&gt;
Multi-tenancy in cloud means sharing of resources and services to run software instances serving multiple consumers and client organizations (tenants). It means physical resources (such as computing, networking, storage) and services are shared, also the administrative functionality and support may also be shared. One of the big driver for providers is to reduce cost by sharing and reusing resources among tenants.  &lt;br /&gt;
&lt;br /&gt;
In a multi-tenant environment a lot more security dependence on the logical segregation (at multiple layers) rather than the physical separation of resources. Some of the cloud providers due to mult-tenancy may not allow audit and assessment by a particular tenant within their shared infrastructure.&lt;br /&gt;
&lt;br /&gt;
==Security Risks==&lt;br /&gt;
&lt;br /&gt;
# '''Inadequate Logical Security Controls''': Physical resources (CPU, networking, storage/databases, application stack)  are shared between multiple tenants. That means dependence on logical segregation and other controls to ensure that one tenant deliberately or inadvertently can not interfere with the security ( confidentiality, integrity, availability) of the other tenants.&lt;br /&gt;
# '''Malicious or Ignorant Tenants''': If the provider has weaker logical controls between tenants, a malicious or an ignorant tenant may reduce the security posture of other tenants. &lt;br /&gt;
# '''Shared Services can become single point of failure''': If the provider has not architected well the common services, they can easily become single point of failure due to misuse or abuse by a tenant. &lt;br /&gt;
# '''Uncoordinated Change Controls and Mis configurations''': When multiple tenants are sharing the underlying infrastructure all changes needs to be well coordinated and tested . &lt;br /&gt;
# '''Co-mingled Tenant Data''' : To reduce cost providers may be storing the data from multiple tenants in same database table-spaces and backup tapes. Data destruction can become a challenge in multi-tenancy especially if data is stored in the shared media (databases, backups, archives).&lt;br /&gt;
# '''Performance Risks''' :One tenant’s heavy use of the service may impact the quality of service provided to other tenants.&lt;br /&gt;
# '''XaaS Specific Risks'''&lt;br /&gt;
## '''SaaS''': Multiple clients (tenants) may be sharing the same application stack ( database, app/web servers, networking). That means the data from multiple tenants may get stored in the same database, may get backed up and archived together, may be moving on common networking devices (unencrypted), and managed by common application processes. This puts a heavy emphasis on logical security built within the application to separate one tenant's users from others. &lt;br /&gt;
## '''PaaS''': Platform stack is shared among the tenants. Vulnerability in the platform stack can allow bleeding between tenants. Shared data backups and archives. &lt;br /&gt;
## '''IaaS''': Cross Virtual machine attacks. Cross network traffic listening. Co-residents with lower security posture, where they are less concerned about keeping their hosts hardened and patched [5]. Especially when these hosts gets compromised and owned by the attackers.&lt;br /&gt;
&lt;br /&gt;
==Countermeasures==&lt;br /&gt;
&lt;br /&gt;
# '''Architecting for Multi-Tenancy''' :  Providers need to architect for multi-tenants, rather than making services that are not designed for multi-tenancy to work. Multi-tenancy architecture should take into account logical segregation, strengthen common services and single point of failures. Also provide more transparency to consumers/tenants [12].&lt;br /&gt;
# '''Data Encryption''': For encrypting the data and keeping it separate from other tenants , strong encryption complemented by tenant-owned key management is required.  In a virtualized environment, this means that encryption can be done granularly on a per-VM basis, with key management owned by the tenant and not the service provider [1].&lt;br /&gt;
# '''Controlled Change Management''' :  eployment of the changes  (especially to common shared services) should be well planned . Usage of feathered release cycles to migrate tenants to new infrastructure. For SaaS providers tenants should be progressively migrated to newer underlying infrastructure. (Providers need to plan extra resources for these activities). Providers should have a dependency mapping of tenants to underlying resources and services. So that any change in the underlying resources can be well planned. &lt;br /&gt;
# '''Transparency/Audit-ability of Administrative Access''': Tenants should have knowledge on administrative access to all their resources/services. One of the way is to have audit-ability of admin access enabled at all the layers of stack (OS, networking, applications , databases) that can be auditable by the tenants. Provider may still be doing the administration but under strong   auditable environment.&lt;br /&gt;
# '''Virtual Private Cloud (VPC)''' : It  is a private cloud existing within a shared or public cloud.   A VPC is a way to partition a public cloud (multi-tenancy) into quarantined virtual infrastructure [3] and link it back to the tenants internal resources by encrypted network links. &lt;br /&gt;
# '''Third Party Assessments''': Alternate assessment options or contractual exceptions if the auditing is required as per the consumer's security posture but provider does not allow it [6].&lt;br /&gt;
# '''Tenant Isolation''' : Tenants can always negotiate or demand from the cloud provider to have their own separate physical infrastructure, databases, storage, networking gears,.. . Isolation does play a  great role in the security field.  However, it does increase the cost for tenants/clients.&lt;br /&gt;
&lt;br /&gt;
==Related Incidence==&lt;br /&gt;
&lt;br /&gt;
#'''Wordpress Outage June 2010'''&lt;br /&gt;
WordPress that houses high profile blogging sites  (such as CNN, Techcrunch), 3 data centers (1300 servers , 10 million blogs) had an outage due to config changes done by programmer (to a database field). It impacted a large set of tenants on this multitenant blogging service [7,8,9].&lt;br /&gt;
&lt;br /&gt;
==Reference:==&lt;br /&gt;
&lt;br /&gt;
# http://chucksblog.emc.com/chucks_blog/2010/01/thoughts-on-secure-multitenancy.html &lt;br /&gt;
# http://aws.amazon.com/vpc/ &lt;br /&gt;
# http://www.elasticvapor.com/2008/05/virtual-private-cloud-vpc.html &lt;br /&gt;
# http://blogs.gartner.com/thomas_bittman/2009/01/08/virtual-cloud-privacy-is-gray/ &lt;br /&gt;
# http://people.csail.mit.edu/tromer/papers/cloudsec.pdf &lt;br /&gt;
# http://www.cloudsecurityalliance.org/csaguide.pdf &lt;br /&gt;
# http://smoothspan.wordpress.com/2010/06/11/wordpress-and-the-dark-side-of-multitenancy/ &lt;br /&gt;
# http://techcrunch.com/2010/06/10/wordpress-gives-us-the-vip-treatment-goes-down-on-us-again/ &lt;br /&gt;
# http://hakre.wordpress.com/2010/06/14/wordpress-outage-feedback/ &lt;br /&gt;
# http://en.blog.wordpress.com/2010/06/14/downtime/ &lt;br /&gt;
# http://www.enterpriseirregulars.com/14980/security-risks-of-multi-tenancy/ &lt;br /&gt;
# http://salesforcechannel.com/video/Multitenant-Magic-Under-the-Cov &lt;br /&gt;
# http://natishalom.typepad.com/nati_shaloms_blog/2010/03/multitenancy-does-it-have-to-be-that-hard.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Cloud ‐ 10 Project]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;headertabs/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88181</id>
		<title>Cloud-10 Multi Tenancy and Physical Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88181"/>
				<updated>2010-08-30T11:23:18Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* R7: Multi Tenancy and Physical Security */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==R7: Multi Tenancy and Physical Security ==&lt;br /&gt;
&lt;br /&gt;
Multi-tenancy in cloud means sharing of resources and services to run software instances serving multiple consumers and client organizations (tenants). It means physical resources (such as computing, networking, storage) and services are shared, also the administrative functionality and support may also be shared. One of the big driver for providers is to reduce cost by sharing and reusing resources among tenants.  &lt;br /&gt;
&lt;br /&gt;
In a multi-tenant environment a lot more security dependence on the logical segregation (at multiple layers) rather than the physical separation of resources. Some of the cloud providers due to mult-tenancy may not allow audit and assessment by a particular tenant within their shared infrastructure.&lt;br /&gt;
&lt;br /&gt;
==Security Risks==&lt;br /&gt;
&lt;br /&gt;
# '''Inadequate Logical Security Controls''': Physical resources (CPU, networking, storage/databases, application stack)  are shared between multiple tenants. That means dependence on logical segregation and other controls to ensure that one tenant deliberately or inadvertently can not interfere with the security ( confidentiality, integrity, availability) of the other tenants.&lt;br /&gt;
# '''Malicious or Ignorant Tenants''': If the provider has weaker logical controls between tenants, a malicious or an ignorant tenant may reduce the security posture of other tenants. &lt;br /&gt;
# '''Shared Services can become single point of failure''': If the provider has not architected well the common services, they can easily become single point of failure due to misuse or abuse by a tenant. &lt;br /&gt;
# '''Uncoordinated Change Controls and Mis configurations''': When multiple tenants are sharing the underlying infrastructure all changes needs to be well coordinated and tested . &lt;br /&gt;
# '''Co-mingled Tenant Data''' : To reduce cost providers may be storing the data from multiple tenants in same database table-spaces and backup tapes. Data destruction can become a challenge in multi-tenancy especially if data is stored in the shared media (databases, backups, archives).&lt;br /&gt;
# '''Performance Risks''' :One tenant’s heavy use of the service may impact the quality of service provided to other tenants.&lt;br /&gt;
# '''XaaS Specific Risks'''&lt;br /&gt;
## '''SaaS''': Multiple clients (tenants) may be sharing the same application stack ( database, app/web servers, networking). That means the data from multiple tenants may get stored in the same database, may get backed up and archived together, may be moving on common networking devices (unencrypted), and managed by common application processes. This puts a heavy emphasis on logical security built within the application to separate one tenant's users from others. &lt;br /&gt;
## '''PaaS''': Platform stack is shared among the tenants. Vulnerability in the platform stack can allow bleeding between tenants. Shared data backups and archives. &lt;br /&gt;
## '''IaaS''': Cross Virtual machine attacks. Cross network traffic listening. Co-residents with lower security posture, where they are less concerned about keeping their hosts hardened and patched [5]. Especially when these hosts gets compromised and owned by the attackers.&lt;br /&gt;
&lt;br /&gt;
==Countermeasures==&lt;br /&gt;
&lt;br /&gt;
# '''Tenant Isolation''' : Tenants can always negotiate or demand from the cloud provider to have their own separate physical infrastructure, databases, storage, networking gears,.. . Isolation does play a  great role in the security field.  However, it does increase the cost for tenants/clients.    &lt;br /&gt;
# '''Data Encryption''': For encrypting the data and keeping it separate from other tenants , strong encryption complemented by tenant-owned key management is required.  In a virtualized environment, this means that encryption can be done granularly on a per-VM basis, with key management owned by the tenant and not the service provider [1].&lt;br /&gt;
# '''Architecting for Multi-Tenancy''' :  Providers need to architect for multi-tenants, rather than making services that are not designed for multi-tenancy to work. Multi-tenancy architecture should take into account logical segregation, strengthen common services and single point of failures. Also provide more transparency to consumers/tenants [12].&lt;br /&gt;
# '''Controlled Change Management''' :  eployment of the changes  (especially to common shared services) should be well planned . Usage of feathered release cycles to migrate tenants to new infrastructure. For SaaS providers tenants should be progressively migrated to newer underlying infrastructure. (Providers need to plan extra resources for these activities). Providers should have a dependency mapping of tenants to underlying resources and services. So that any change in the underlying resources can be well planned. &lt;br /&gt;
# '''Virtual Private Cloud (VPC)''' : It  is a private cloud existing within a shared or public cloud.   A VPC is a way to partition a public cloud (multi-tenancy) into quarantined virtual infrastructure [3] and link it back to the tenants internal resources by encrypted network links. &lt;br /&gt;
# '''Third Party Assessments''': Alternate assessment options or contractual exceptions if the auditing is required as per the consumer's security posture but provider does not allow it [6].&lt;br /&gt;
# '''Transparency/Audit-ability of Administrative Access''': Tenants should have knowledge on administrative access to all their resources/services. One of the way is to have audit-ability of admin access enabled at all the layers of stack (OS, networking, applications , databases) that can be auditable by the tenants. Provider may still be doing the administration but under strong   auditable environment.&lt;br /&gt;
&lt;br /&gt;
==Related Incidence==&lt;br /&gt;
&lt;br /&gt;
#'''Wordpress Outage June 2010'''&lt;br /&gt;
WordPress that houses high profile blogging sites  (such as CNN, Techcrunch), 3 data centers (1300 servers , 10 million blogs) had an outage due to config changes done by programmer (to a database field). It impacted a large set of tenants on this multitenant blogging service [7,8,9].&lt;br /&gt;
&lt;br /&gt;
==Reference:==&lt;br /&gt;
&lt;br /&gt;
# http://chucksblog.emc.com/chucks_blog/2010/01/thoughts-on-secure-multitenancy.html &lt;br /&gt;
# http://aws.amazon.com/vpc/ &lt;br /&gt;
# http://www.elasticvapor.com/2008/05/virtual-private-cloud-vpc.html &lt;br /&gt;
# http://blogs.gartner.com/thomas_bittman/2009/01/08/virtual-cloud-privacy-is-gray/ &lt;br /&gt;
# http://people.csail.mit.edu/tromer/papers/cloudsec.pdf &lt;br /&gt;
# http://www.cloudsecurityalliance.org/csaguide.pdf &lt;br /&gt;
# http://smoothspan.wordpress.com/2010/06/11/wordpress-and-the-dark-side-of-multitenancy/ &lt;br /&gt;
# http://techcrunch.com/2010/06/10/wordpress-gives-us-the-vip-treatment-goes-down-on-us-again/ &lt;br /&gt;
# http://hakre.wordpress.com/2010/06/14/wordpress-outage-feedback/ &lt;br /&gt;
# http://en.blog.wordpress.com/2010/06/14/downtime/ &lt;br /&gt;
# http://www.enterpriseirregulars.com/14980/security-risks-of-multi-tenancy/ &lt;br /&gt;
# http://salesforcechannel.com/video/Multitenant-Magic-Under-the-Cov &lt;br /&gt;
# http://natishalom.typepad.com/nati_shaloms_blog/2010/03/multitenancy-does-it-have-to-be-that-hard.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Cloud ‐ 10 Project]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;headertabs/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88178</id>
		<title>Cloud-10 Multi Tenancy and Physical Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88178"/>
				<updated>2010-08-30T11:00:59Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==R7: Multi Tenancy and Physical Security ==&lt;br /&gt;
&lt;br /&gt;
Multi-tenancy in cloud means sharing of resources and services among multiple consumers and clients (tenants). It means physical resources (such as computing, networking, storage) and services are shared, also the administrative functionality and support may also be shared. One of the big driver for providers is to reduce cost by sharing and reusing resources among tenants.  &lt;br /&gt;
&lt;br /&gt;
In a multi-tenant environment a lot more security dependence on the logical segregation (at multiple layers) rather than the physical separation of resources. Some of the cloud providers due to mult-tenancy may not allow audit and assessment by a particular tenant within their shared infrastructure.&lt;br /&gt;
&lt;br /&gt;
==Security Risks==&lt;br /&gt;
&lt;br /&gt;
# '''Inadequate Logical Security Controls''': Physical resources (CPU, networking, storage/databases, application stack)  are shared between multiple tenants. That means dependence on logical segregation and other controls to ensure that one tenant deliberately or inadvertently can not interfere with the security ( confidentiality, integrity, availability) of the other tenants.&lt;br /&gt;
# '''Malicious or Ignorant Tenants''': If the provider has weaker logical controls between tenants, a malicious or an ignorant tenant may reduce the security posture of other tenants. &lt;br /&gt;
# '''Shared Services can become single point of failure''': If the provider has not architected well the common services, they can easily become single point of failure due to misuse or abuse by a tenant. &lt;br /&gt;
# '''Uncoordinated Change Controls and Mis configurations''': When multiple tenants are sharing the underlying infrastructure all changes needs to be well coordinated and tested . &lt;br /&gt;
# '''Co-mingled Tenant Data''' : To reduce cost providers may be storing the data from multiple tenants in same database table-spaces and backup tapes. Data destruction can become a challenge in multi-tenancy especially if data is stored in the shared media (databases, backups, archives).&lt;br /&gt;
# '''Performance Risks''' :One tenant’s heavy use of the service may impact the quality of service provided to other tenants.&lt;br /&gt;
# '''XaaS Specific Risks'''&lt;br /&gt;
## '''SaaS''': Multiple clients (tenants) may be sharing the same application stack ( database, app/web servers, networking). That means the data from multiple tenants may get stored in the same database, may get backed up and archived together, may be moving on common networking devices (unencrypted), and managed by common application processes. This puts a heavy emphasis on logical security built within the application to separate one tenant's users from others. &lt;br /&gt;
## '''PaaS''': Platform stack is shared among the tenants. Vulnerability in the platform stack can allow bleeding between tenants. Shared data backups and archives. &lt;br /&gt;
## '''IaaS''': Cross Virtual machine attacks. Cross network traffic listening. Co-residents with lower security posture, where they are less concerned about keeping their hosts hardened and patched [5]. Especially when these hosts gets compromised and owned by the attackers.&lt;br /&gt;
&lt;br /&gt;
==Countermeasures==&lt;br /&gt;
&lt;br /&gt;
# '''Tenant Isolation''' : Tenants can always negotiate or demand from the cloud provider to have their own separate physical infrastructure, databases, storage, networking gears,.. . Isolation does play a  great role in the security field.  However, it does increase the cost for tenants/clients.    &lt;br /&gt;
# '''Data Encryption''': For encrypting the data and keeping it separate from other tenants , strong encryption complemented by tenant-owned key management is required.  In a virtualized environment, this means that encryption can be done granularly on a per-VM basis, with key management owned by the tenant and not the service provider [1].&lt;br /&gt;
# '''Architecting for Multi-Tenancy''' :  Providers need to architect for multi-tenants, rather than making services that are not designed for multi-tenancy to work. Multi-tenancy architecture should take into account logical segregation, strengthen common services and single point of failures. Also provide more transparency to consumers/tenants [12].&lt;br /&gt;
# '''Controlled Change Management''' :  eployment of the changes  (especially to common shared services) should be well planned . Usage of feathered release cycles to migrate tenants to new infrastructure. For SaaS providers tenants should be progressively migrated to newer underlying infrastructure. (Providers need to plan extra resources for these activities). Providers should have a dependency mapping of tenants to underlying resources and services. So that any change in the underlying resources can be well planned. &lt;br /&gt;
# '''Virtual Private Cloud (VPC)''' : It  is a private cloud existing within a shared or public cloud.   A VPC is a way to partition a public cloud (multi-tenancy) into quarantined virtual infrastructure [3] and link it back to the tenants internal resources by encrypted network links. &lt;br /&gt;
# '''Third Party Assessments''': Alternate assessment options or contractual exceptions if the auditing is required as per the consumer's security posture but provider does not allow it [6].&lt;br /&gt;
# '''Transparency/Audit-ability of Administrative Access''': Tenants should have knowledge on administrative access to all their resources/services. One of the way is to have audit-ability of admin access enabled at all the layers of stack (OS, networking, applications , databases) that can be auditable by the tenants. Provider may still be doing the administration but under strong   auditable environment.&lt;br /&gt;
&lt;br /&gt;
==Related Incidence==&lt;br /&gt;
&lt;br /&gt;
#'''Wordpress Outage June 2010'''&lt;br /&gt;
WordPress that houses high profile blogging sites  (such as CNN, Techcrunch), 3 data centers (1300 servers , 10 million blogs) had an outage due to config changes done by programmer (to a database field). It impacted a large set of tenants on this multitenant blogging service [7,8,9].&lt;br /&gt;
&lt;br /&gt;
==Reference:==&lt;br /&gt;
&lt;br /&gt;
# http://chucksblog.emc.com/chucks_blog/2010/01/thoughts-on-secure-multitenancy.html &lt;br /&gt;
# http://aws.amazon.com/vpc/ &lt;br /&gt;
# http://www.elasticvapor.com/2008/05/virtual-private-cloud-vpc.html &lt;br /&gt;
# http://blogs.gartner.com/thomas_bittman/2009/01/08/virtual-cloud-privacy-is-gray/ &lt;br /&gt;
# http://people.csail.mit.edu/tromer/papers/cloudsec.pdf &lt;br /&gt;
# http://www.cloudsecurityalliance.org/csaguide.pdf &lt;br /&gt;
# http://smoothspan.wordpress.com/2010/06/11/wordpress-and-the-dark-side-of-multitenancy/ &lt;br /&gt;
# http://techcrunch.com/2010/06/10/wordpress-gives-us-the-vip-treatment-goes-down-on-us-again/ &lt;br /&gt;
# http://hakre.wordpress.com/2010/06/14/wordpress-outage-feedback/ &lt;br /&gt;
# http://en.blog.wordpress.com/2010/06/14/downtime/ &lt;br /&gt;
# http://www.enterpriseirregulars.com/14980/security-risks-of-multi-tenancy/ &lt;br /&gt;
# http://salesforcechannel.com/video/Multitenant-Magic-Under-the-Cov &lt;br /&gt;
# http://natishalom.typepad.com/nati_shaloms_blog/2010/03/multitenancy-does-it-have-to-be-that-hard.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Cloud ‐ 10 Project]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;headertabs/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88157</id>
		<title>Cloud-10 Multi Tenancy and Physical Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88157"/>
				<updated>2010-08-29T20:01:39Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Countermeasures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==R7: Multi Tenancy and Physical Security ==&lt;br /&gt;
&lt;br /&gt;
Multi-tenancy in cloud means sharing of resources and services among multiple consumers and clients (tenants). It means physical resources (such as computing, networking, storage) and services are shared, also the administrative functionality and support may also be shared. One of the big driver for providers is to reduce cost by sharing and reusing resources among tenants.  &lt;br /&gt;
&lt;br /&gt;
In a multi-tenant environment a lot more security dependence on the logical segregation (at multiple layers) rather than the physical separation of resources. Some of the cloud providers due to mult-tenancy may not allow audit and assessment by a particular tenant within their shared infrastructure.&lt;br /&gt;
&lt;br /&gt;
==Security Risks==&lt;br /&gt;
&lt;br /&gt;
# '''Inadequate Logical Security Controls''': Physical resources (CPU, networking, storage/databases, application stack)  are shared between multiple tenants. That means dependence on logical segregation and other controls to ensure that one tenant deliberately or inadvertently can not interfere with the security ( confidentiality, integrity, availability) of the other tenants.&lt;br /&gt;
# '''Malicious or Ignorant Tenants''': If the provider has weaker logical controls between tenants, a malicious or an ignorant tenant may reduce the security posture of other tenants. &lt;br /&gt;
# '''Shared Services can become single point of failure''': If the provider has not architected well the common services, they can easily become single point of failure due to misuse or abuse by a tenant. &lt;br /&gt;
# '''Uncoordinated Change Controls and Mis configurations''': When multiple tenants are sharing the underlying infrastructure all changes needs to be well coordinated and tested . &lt;br /&gt;
# '''Co-mingled Tenant Data''' : To reduce cost providers may be storing the data from multiple tenants in same database table-spaces and backup tapes. Data destruction can become a challenge in multi-tenancy especially if data is stored in the shared media (databases, backups, archives).&lt;br /&gt;
# '''XaaS Specific Risks'''&lt;br /&gt;
## '''SaaS''': Multiple clients (tenants) may be sharing the same application stack ( database, app/web servers, networking). That means the data from multiple tenants may get stored in the same database, may get backed up and archived together, may be moving on common networking devices (unencrypted), and managed by common application processes. This puts a heavy emphasis on logical security built within the application to separate one tenant's users from others. &lt;br /&gt;
## '''PaaS''': Platform stack is shared among the tenants. Vulnerability in the platform stack can allow bleeding between tenants. Shared data backups and archives. &lt;br /&gt;
## '''IaaS''': Cross Virtual machine attacks. Cross network traffic listening. Co-residents with lower security posture, where they are less concerned about keeping their hosts hardened and patched [5]. Especially when these hosts gets compromised and owned by the attackers.&lt;br /&gt;
&lt;br /&gt;
==Countermeasures==&lt;br /&gt;
&lt;br /&gt;
# '''Tenant Isolation''' : Tenants can always negotiate or demand from the cloud provider to have their own separate physical infrastructure, databases, storage, networking gears,.. . Isolation does play a  great role in the security field.  However, it does increase the cost for tenants/clients.    &lt;br /&gt;
# '''Data Encryption''': For encrypting the data and keeping it separate from other tenants , strong encryption complemented by tenant-owned key management is required.  In a virtualized environment, this means that encryption can be done granularly on a per-VM basis, with key management owned by the tenant and not the service provider [1].&lt;br /&gt;
# '''Architecting for Multi-Tenancy''' :  Providers need to architect for multi-tenants, rather than making services that are not designed for multi-tenancy to work. Multi-tenancy architecture should take into account logical segregation, strengthen common services and single point of failures. Also provide more transparency to consumers/tenants [12].&lt;br /&gt;
# '''Controlled Change Management''' :  eployment of the changes  (especially to common shared services) should be well planned . Usage of feathered release cycles to migrate tenants to new infrastructure. For SaaS providers tenants should be progressively migrated to newer underlying infrastructure. (Providers need to plan extra resources for these activities). Providers should have a dependency mapping of tenants to underlying resources and services. So that any change in the underlying resources can be well planned. &lt;br /&gt;
# '''Virtual Private Cloud (VPC)''' : It  is a private cloud existing within a shared or public cloud.   A VPC is a way to partition a public cloud (multi-tenancy) into quarantined virtual infrastructure [3] and link it back to the tenants internal resources by encrypted network links. &lt;br /&gt;
# '''Third Party Assessments''': Alternate assessment options or contractual exceptions if the auditing is required as per the consumer's security posture but provider does not allow it [6].&lt;br /&gt;
# '''Transparency/Audit-ability of Administrative Access''': Tenants should have knowledge on administrative access to all their resources/services. One of the way is to have audit-ability of admin access enabled at all the layers of stack (OS, networking, applications , databases) that can be auditable by the tenants. Provider may still be doing the administration but under strong   auditable environment.&lt;br /&gt;
&lt;br /&gt;
==Related Incidence==&lt;br /&gt;
&lt;br /&gt;
#'''Wordpress Outage June 2010'''&lt;br /&gt;
WordPress that houses high profile blogging sites  (such as CNN, Techcrunch), 3 data centers (1300 servers , 10 million blogs) had an outage due to config changes done by programmer (to a database field). It impacted a large set of tenants on this multitenant blogging service [7,8,9].&lt;br /&gt;
&lt;br /&gt;
==Reference:==&lt;br /&gt;
&lt;br /&gt;
# http://chucksblog.emc.com/chucks_blog/2010/01/thoughts-on-secure-multitenancy.html &lt;br /&gt;
# http://aws.amazon.com/vpc/ &lt;br /&gt;
# http://www.elasticvapor.com/2008/05/virtual-private-cloud-vpc.html &lt;br /&gt;
# http://blogs.gartner.com/thomas_bittman/2009/01/08/virtual-cloud-privacy-is-gray/ &lt;br /&gt;
# http://people.csail.mit.edu/tromer/papers/cloudsec.pdf &lt;br /&gt;
# http://www.cloudsecurityalliance.org/csaguide.pdf &lt;br /&gt;
# http://smoothspan.wordpress.com/2010/06/11/wordpress-and-the-dark-side-of-multitenancy/ &lt;br /&gt;
# http://techcrunch.com/2010/06/10/wordpress-gives-us-the-vip-treatment-goes-down-on-us-again/ &lt;br /&gt;
# http://hakre.wordpress.com/2010/06/14/wordpress-outage-feedback/ &lt;br /&gt;
# http://en.blog.wordpress.com/2010/06/14/downtime/ &lt;br /&gt;
# http://www.enterpriseirregulars.com/14980/security-risks-of-multi-tenancy/ &lt;br /&gt;
# http://salesforcechannel.com/video/Multitenant-Magic-Under-the-Cov &lt;br /&gt;
# http://natishalom.typepad.com/nati_shaloms_blog/2010/03/multitenancy-does-it-have-to-be-that-hard.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Cloud ‐ 10 Project]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;headertabs/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88156</id>
		<title>Cloud-10 Multi Tenancy and Physical Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88156"/>
				<updated>2010-08-29T19:51:15Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Related Incidence */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==R7: Multi Tenancy and Physical Security ==&lt;br /&gt;
&lt;br /&gt;
Multi-tenancy in cloud means sharing of resources and services among multiple consumers and clients (tenants). It means physical resources (such as computing, networking, storage) and services are shared, also the administrative functionality and support may also be shared. One of the big driver for providers is to reduce cost by sharing and reusing resources among tenants.  &lt;br /&gt;
&lt;br /&gt;
In a multi-tenant environment a lot more security dependence on the logical segregation (at multiple layers) rather than the physical separation of resources. Some of the cloud providers due to mult-tenancy may not allow audit and assessment by a particular tenant within their shared infrastructure.&lt;br /&gt;
&lt;br /&gt;
==Security Risks==&lt;br /&gt;
&lt;br /&gt;
# '''Inadequate Logical Security Controls''': Physical resources (CPU, networking, storage/databases, application stack)  are shared between multiple tenants. That means dependence on logical segregation and other controls to ensure that one tenant deliberately or inadvertently can not interfere with the security ( confidentiality, integrity, availability) of the other tenants.&lt;br /&gt;
# '''Malicious or Ignorant Tenants''': If the provider has weaker logical controls between tenants, a malicious or an ignorant tenant may reduce the security posture of other tenants. &lt;br /&gt;
# '''Shared Services can become single point of failure''': If the provider has not architected well the common services, they can easily become single point of failure due to misuse or abuse by a tenant. &lt;br /&gt;
# '''Uncoordinated Change Controls and Mis configurations''': When multiple tenants are sharing the underlying infrastructure all changes needs to be well coordinated and tested . &lt;br /&gt;
# '''Co-mingled Tenant Data''' : To reduce cost providers may be storing the data from multiple tenants in same database table-spaces and backup tapes. Data destruction can become a challenge in multi-tenancy especially if data is stored in the shared media (databases, backups, archives).&lt;br /&gt;
# '''XaaS Specific Risks'''&lt;br /&gt;
## '''SaaS''': Multiple clients (tenants) may be sharing the same application stack ( database, app/web servers, networking). That means the data from multiple tenants may get stored in the same database, may get backed up and archived together, may be moving on common networking devices (unencrypted), and managed by common application processes. This puts a heavy emphasis on logical security built within the application to separate one tenant's users from others. &lt;br /&gt;
## '''PaaS''': Platform stack is shared among the tenants. Vulnerability in the platform stack can allow bleeding between tenants. Shared data backups and archives. &lt;br /&gt;
## '''IaaS''': Cross Virtual machine attacks. Cross network traffic listening. Co-residents with lower security posture, where they are less concerned about keeping their hosts hardened and patched [5]. Especially when these hosts gets compromised and owned by the attackers.&lt;br /&gt;
&lt;br /&gt;
==Countermeasures==&lt;br /&gt;
&lt;br /&gt;
# Tenants can always negotiate or demand from the cloud provider to have their own separate physical infrastructure, databases, storage, networking gears,.. . Isolation does play a  great role in the security field.  However, it does increase the cost for tenants/clients.    &lt;br /&gt;
# For encrypting the data and keeping it separate from other tenants , strong encryption complemented by tenant-owned key management is required.  In a virtualized environment, this means that encryption can be done granularly on a per-VM basis, with key management owned by the tenant and not the service provider [1].&lt;br /&gt;
# Tenants should have control on administrative access to all their resources running. One of the way is to have audit-ability of admin access enabled at all the layers of stack (OS, networking, applications , databases) that can be auditable by the tenants. Provider may still be doing the administration but under strong   auditable environment. &lt;br /&gt;
# Virtual Private Cloud (VPC): It  is a private cloud existing within a shared or public cloud.   A VPC is a way to partition a public cloud (multi-tenancy) into quarantined virtual infrastructure [3] and link it back to the tenants internal resources by encrypted network links. &lt;br /&gt;
# Alternate assessment options or contractual exceptions if the auditing is required as per the consumer's security posture but provider does not allow it [6].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related Incidence==&lt;br /&gt;
&lt;br /&gt;
#'''Wordpress Outage June 2010'''&lt;br /&gt;
WordPress that houses high profile blogging sites  (such as CNN, Techcrunch), 3 data centers (1300 servers , 10 million blogs) had an outage due to config changes done by programmer (to a database field). It impacted a large set of tenants on this multitenant blogging service [7,8,9].&lt;br /&gt;
&lt;br /&gt;
==Reference:==&lt;br /&gt;
&lt;br /&gt;
# http://chucksblog.emc.com/chucks_blog/2010/01/thoughts-on-secure-multitenancy.html &lt;br /&gt;
# http://aws.amazon.com/vpc/ &lt;br /&gt;
# http://www.elasticvapor.com/2008/05/virtual-private-cloud-vpc.html &lt;br /&gt;
# http://blogs.gartner.com/thomas_bittman/2009/01/08/virtual-cloud-privacy-is-gray/ &lt;br /&gt;
# http://people.csail.mit.edu/tromer/papers/cloudsec.pdf &lt;br /&gt;
# http://www.cloudsecurityalliance.org/csaguide.pdf &lt;br /&gt;
# http://smoothspan.wordpress.com/2010/06/11/wordpress-and-the-dark-side-of-multitenancy/ &lt;br /&gt;
# http://techcrunch.com/2010/06/10/wordpress-gives-us-the-vip-treatment-goes-down-on-us-again/ &lt;br /&gt;
# http://hakre.wordpress.com/2010/06/14/wordpress-outage-feedback/ &lt;br /&gt;
# http://en.blog.wordpress.com/2010/06/14/downtime/ &lt;br /&gt;
# http://www.enterpriseirregulars.com/14980/security-risks-of-multi-tenancy/ &lt;br /&gt;
# http://salesforcechannel.com/video/Multitenant-Magic-Under-the-Cov &lt;br /&gt;
# http://natishalom.typepad.com/nati_shaloms_blog/2010/03/multitenancy-does-it-have-to-be-that-hard.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Cloud ‐ 10 Project]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;headertabs/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88155</id>
		<title>Cloud-10 Multi Tenancy and Physical Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88155"/>
				<updated>2010-08-29T19:50:32Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Countermeasures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==R7: Multi Tenancy and Physical Security ==&lt;br /&gt;
&lt;br /&gt;
Multi-tenancy in cloud means sharing of resources and services among multiple consumers and clients (tenants). It means physical resources (such as computing, networking, storage) and services are shared, also the administrative functionality and support may also be shared. One of the big driver for providers is to reduce cost by sharing and reusing resources among tenants.  &lt;br /&gt;
&lt;br /&gt;
In a multi-tenant environment a lot more security dependence on the logical segregation (at multiple layers) rather than the physical separation of resources. Some of the cloud providers due to mult-tenancy may not allow audit and assessment by a particular tenant within their shared infrastructure.&lt;br /&gt;
&lt;br /&gt;
==Security Risks==&lt;br /&gt;
&lt;br /&gt;
# '''Inadequate Logical Security Controls''': Physical resources (CPU, networking, storage/databases, application stack)  are shared between multiple tenants. That means dependence on logical segregation and other controls to ensure that one tenant deliberately or inadvertently can not interfere with the security ( confidentiality, integrity, availability) of the other tenants.&lt;br /&gt;
# '''Malicious or Ignorant Tenants''': If the provider has weaker logical controls between tenants, a malicious or an ignorant tenant may reduce the security posture of other tenants. &lt;br /&gt;
# '''Shared Services can become single point of failure''': If the provider has not architected well the common services, they can easily become single point of failure due to misuse or abuse by a tenant. &lt;br /&gt;
# '''Uncoordinated Change Controls and Mis configurations''': When multiple tenants are sharing the underlying infrastructure all changes needs to be well coordinated and tested . &lt;br /&gt;
# '''Co-mingled Tenant Data''' : To reduce cost providers may be storing the data from multiple tenants in same database table-spaces and backup tapes. Data destruction can become a challenge in multi-tenancy especially if data is stored in the shared media (databases, backups, archives).&lt;br /&gt;
# '''XaaS Specific Risks'''&lt;br /&gt;
## '''SaaS''': Multiple clients (tenants) may be sharing the same application stack ( database, app/web servers, networking). That means the data from multiple tenants may get stored in the same database, may get backed up and archived together, may be moving on common networking devices (unencrypted), and managed by common application processes. This puts a heavy emphasis on logical security built within the application to separate one tenant's users from others. &lt;br /&gt;
## '''PaaS''': Platform stack is shared among the tenants. Vulnerability in the platform stack can allow bleeding between tenants. Shared data backups and archives. &lt;br /&gt;
## '''IaaS''': Cross Virtual machine attacks. Cross network traffic listening. Co-residents with lower security posture, where they are less concerned about keeping their hosts hardened and patched [5]. Especially when these hosts gets compromised and owned by the attackers.&lt;br /&gt;
&lt;br /&gt;
==Countermeasures==&lt;br /&gt;
&lt;br /&gt;
# Tenants can always negotiate or demand from the cloud provider to have their own separate physical infrastructure, databases, storage, networking gears,.. . Isolation does play a  great role in the security field.  However, it does increase the cost for tenants/clients.    &lt;br /&gt;
# For encrypting the data and keeping it separate from other tenants , strong encryption complemented by tenant-owned key management is required.  In a virtualized environment, this means that encryption can be done granularly on a per-VM basis, with key management owned by the tenant and not the service provider [1].&lt;br /&gt;
# Tenants should have control on administrative access to all their resources running. One of the way is to have audit-ability of admin access enabled at all the layers of stack (OS, networking, applications , databases) that can be auditable by the tenants. Provider may still be doing the administration but under strong   auditable environment. &lt;br /&gt;
# Virtual Private Cloud (VPC): It  is a private cloud existing within a shared or public cloud.   A VPC is a way to partition a public cloud (multi-tenancy) into quarantined virtual infrastructure [3] and link it back to the tenants internal resources by encrypted network links. &lt;br /&gt;
# Alternate assessment options or contractual exceptions if the auditing is required as per the consumer's security posture but provider does not allow it [6].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Related Incidence==&lt;br /&gt;
&lt;br /&gt;
#'''Wordpress Outage June 2010'''&lt;br /&gt;
WordPress that houses high profile blogging sites  (such as CNN, Techcrunch), 3 data centers (1300 servers , 10 million blogs) had an outage due to config changes done by programmer (to a database field). It impacted a large set of tenants on this multitenant blogging service.&lt;br /&gt;
&lt;br /&gt;
==Reference:==&lt;br /&gt;
&lt;br /&gt;
# http://chucksblog.emc.com/chucks_blog/2010/01/thoughts-on-secure-multitenancy.html &lt;br /&gt;
# http://aws.amazon.com/vpc/ &lt;br /&gt;
# http://www.elasticvapor.com/2008/05/virtual-private-cloud-vpc.html &lt;br /&gt;
# http://blogs.gartner.com/thomas_bittman/2009/01/08/virtual-cloud-privacy-is-gray/ &lt;br /&gt;
# http://people.csail.mit.edu/tromer/papers/cloudsec.pdf &lt;br /&gt;
# http://www.cloudsecurityalliance.org/csaguide.pdf &lt;br /&gt;
# http://smoothspan.wordpress.com/2010/06/11/wordpress-and-the-dark-side-of-multitenancy/ &lt;br /&gt;
# http://techcrunch.com/2010/06/10/wordpress-gives-us-the-vip-treatment-goes-down-on-us-again/ &lt;br /&gt;
# http://hakre.wordpress.com/2010/06/14/wordpress-outage-feedback/ &lt;br /&gt;
# http://en.blog.wordpress.com/2010/06/14/downtime/ &lt;br /&gt;
# http://www.enterpriseirregulars.com/14980/security-risks-of-multi-tenancy/ &lt;br /&gt;
# http://salesforcechannel.com/video/Multitenant-Magic-Under-the-Cov &lt;br /&gt;
# http://natishalom.typepad.com/nati_shaloms_blog/2010/03/multitenancy-does-it-have-to-be-that-hard.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Cloud ‐ 10 Project]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;headertabs/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88154</id>
		<title>Cloud-10 Multi Tenancy and Physical Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88154"/>
				<updated>2010-08-29T19:48:11Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Reference: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==R7: Multi Tenancy and Physical Security ==&lt;br /&gt;
&lt;br /&gt;
Multi-tenancy in cloud means sharing of resources and services among multiple consumers and clients (tenants). It means physical resources (such as computing, networking, storage) and services are shared, also the administrative functionality and support may also be shared. One of the big driver for providers is to reduce cost by sharing and reusing resources among tenants.  &lt;br /&gt;
&lt;br /&gt;
In a multi-tenant environment a lot more security dependence on the logical segregation (at multiple layers) rather than the physical separation of resources. Some of the cloud providers due to mult-tenancy may not allow audit and assessment by a particular tenant within their shared infrastructure.&lt;br /&gt;
&lt;br /&gt;
==Security Risks==&lt;br /&gt;
&lt;br /&gt;
# '''Inadequate Logical Security Controls''': Physical resources (CPU, networking, storage/databases, application stack)  are shared between multiple tenants. That means dependence on logical segregation and other controls to ensure that one tenant deliberately or inadvertently can not interfere with the security ( confidentiality, integrity, availability) of the other tenants.&lt;br /&gt;
# '''Malicious or Ignorant Tenants''': If the provider has weaker logical controls between tenants, a malicious or an ignorant tenant may reduce the security posture of other tenants. &lt;br /&gt;
# '''Shared Services can become single point of failure''': If the provider has not architected well the common services, they can easily become single point of failure due to misuse or abuse by a tenant. &lt;br /&gt;
# '''Uncoordinated Change Controls and Mis configurations''': When multiple tenants are sharing the underlying infrastructure all changes needs to be well coordinated and tested . &lt;br /&gt;
# '''Co-mingled Tenant Data''' : To reduce cost providers may be storing the data from multiple tenants in same database table-spaces and backup tapes. Data destruction can become a challenge in multi-tenancy especially if data is stored in the shared media (databases, backups, archives).&lt;br /&gt;
# '''XaaS Specific Risks'''&lt;br /&gt;
## '''SaaS''': Multiple clients (tenants) may be sharing the same application stack ( database, app/web servers, networking). That means the data from multiple tenants may get stored in the same database, may get backed up and archived together, may be moving on common networking devices (unencrypted), and managed by common application processes. This puts a heavy emphasis on logical security built within the application to separate one tenant's users from others. &lt;br /&gt;
## '''PaaS''': Platform stack is shared among the tenants. Vulnerability in the platform stack can allow bleeding between tenants. Shared data backups and archives. &lt;br /&gt;
## '''IaaS''': Cross Virtual machine attacks. Cross network traffic listening. Co-residents with lower security posture, where they are less concerned about keeping their hosts hardened and patched [5]. Especially when these hosts gets compromised and owned by the attackers.&lt;br /&gt;
&lt;br /&gt;
==Countermeasures==&lt;br /&gt;
&lt;br /&gt;
# Tenants can always negotiate or demand from the cloud provider to have their own separate physical infrastructure, databases, storage, networking gears,.. . Isolation does play a  great role in the security field.  However, it does increase the cost for tenants/clients.    &lt;br /&gt;
# For encrypting the data and keeping it separate from other tenants , strong encryption complemented by tenant-owned key management is required.  In a virtualized environment, this means that encryption can be done granularly on a per-VM basis, with key management owned by the tenant and not the service provider [1].&lt;br /&gt;
# Tenants should have control on administrative access to all their resources running. One of the way is to have audit-ability of admin access enabled at all the layers of stack (OS, networking, applications , databases) that can be auditable by the tenants. Provider may still be doing the administration but under strong   auditable environment. &lt;br /&gt;
# Virtual Private Cloud (VPC): It  is a private cloud existing within a shared or public cloud.   A VPC is a way to partition a public cloud (multi-tenancy) into quarantined virtual infrastructure [3] and link it back to the tenants internal resources by encrypted network links. &lt;br /&gt;
# Alternate assessment options or contractual exceptions if the auditing is required as per the consumer's security posture but provider does not allow it [6].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference:==&lt;br /&gt;
&lt;br /&gt;
# http://chucksblog.emc.com/chucks_blog/2010/01/thoughts-on-secure-multitenancy.html &lt;br /&gt;
# http://aws.amazon.com/vpc/ &lt;br /&gt;
# http://www.elasticvapor.com/2008/05/virtual-private-cloud-vpc.html &lt;br /&gt;
# http://blogs.gartner.com/thomas_bittman/2009/01/08/virtual-cloud-privacy-is-gray/ &lt;br /&gt;
# http://people.csail.mit.edu/tromer/papers/cloudsec.pdf &lt;br /&gt;
# http://www.cloudsecurityalliance.org/csaguide.pdf &lt;br /&gt;
# http://smoothspan.wordpress.com/2010/06/11/wordpress-and-the-dark-side-of-multitenancy/ &lt;br /&gt;
# http://techcrunch.com/2010/06/10/wordpress-gives-us-the-vip-treatment-goes-down-on-us-again/ &lt;br /&gt;
# http://hakre.wordpress.com/2010/06/14/wordpress-outage-feedback/ &lt;br /&gt;
# http://en.blog.wordpress.com/2010/06/14/downtime/ &lt;br /&gt;
# http://www.enterpriseirregulars.com/14980/security-risks-of-multi-tenancy/ &lt;br /&gt;
# http://salesforcechannel.com/video/Multitenant-Magic-Under-the-Cov &lt;br /&gt;
# http://natishalom.typepad.com/nati_shaloms_blog/2010/03/multitenancy-does-it-have-to-be-that-hard.html &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Cloud ‐ 10 Project]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;headertabs/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88153</id>
		<title>Cloud-10 Multi Tenancy and Physical Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88153"/>
				<updated>2010-08-29T19:47:09Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Security Risks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==R7: Multi Tenancy and Physical Security ==&lt;br /&gt;
&lt;br /&gt;
Multi-tenancy in cloud means sharing of resources and services among multiple consumers and clients (tenants). It means physical resources (such as computing, networking, storage) and services are shared, also the administrative functionality and support may also be shared. One of the big driver for providers is to reduce cost by sharing and reusing resources among tenants.  &lt;br /&gt;
&lt;br /&gt;
In a multi-tenant environment a lot more security dependence on the logical segregation (at multiple layers) rather than the physical separation of resources. Some of the cloud providers due to mult-tenancy may not allow audit and assessment by a particular tenant within their shared infrastructure.&lt;br /&gt;
&lt;br /&gt;
==Security Risks==&lt;br /&gt;
&lt;br /&gt;
# '''Inadequate Logical Security Controls''': Physical resources (CPU, networking, storage/databases, application stack)  are shared between multiple tenants. That means dependence on logical segregation and other controls to ensure that one tenant deliberately or inadvertently can not interfere with the security ( confidentiality, integrity, availability) of the other tenants.&lt;br /&gt;
# '''Malicious or Ignorant Tenants''': If the provider has weaker logical controls between tenants, a malicious or an ignorant tenant may reduce the security posture of other tenants. &lt;br /&gt;
# '''Shared Services can become single point of failure''': If the provider has not architected well the common services, they can easily become single point of failure due to misuse or abuse by a tenant. &lt;br /&gt;
# '''Uncoordinated Change Controls and Mis configurations''': When multiple tenants are sharing the underlying infrastructure all changes needs to be well coordinated and tested . &lt;br /&gt;
# '''Co-mingled Tenant Data''' : To reduce cost providers may be storing the data from multiple tenants in same database table-spaces and backup tapes. Data destruction can become a challenge in multi-tenancy especially if data is stored in the shared media (databases, backups, archives).&lt;br /&gt;
# '''XaaS Specific Risks'''&lt;br /&gt;
## '''SaaS''': Multiple clients (tenants) may be sharing the same application stack ( database, app/web servers, networking). That means the data from multiple tenants may get stored in the same database, may get backed up and archived together, may be moving on common networking devices (unencrypted), and managed by common application processes. This puts a heavy emphasis on logical security built within the application to separate one tenant's users from others. &lt;br /&gt;
## '''PaaS''': Platform stack is shared among the tenants. Vulnerability in the platform stack can allow bleeding between tenants. Shared data backups and archives. &lt;br /&gt;
## '''IaaS''': Cross Virtual machine attacks. Cross network traffic listening. Co-residents with lower security posture, where they are less concerned about keeping their hosts hardened and patched [5]. Especially when these hosts gets compromised and owned by the attackers.&lt;br /&gt;
&lt;br /&gt;
==Countermeasures==&lt;br /&gt;
&lt;br /&gt;
# Tenants can always negotiate or demand from the cloud provider to have their own separate physical infrastructure, databases, storage, networking gears,.. . Isolation does play a  great role in the security field.  However, it does increase the cost for tenants/clients.    &lt;br /&gt;
# For encrypting the data and keeping it separate from other tenants , strong encryption complemented by tenant-owned key management is required.  In a virtualized environment, this means that encryption can be done granularly on a per-VM basis, with key management owned by the tenant and not the service provider [1].&lt;br /&gt;
# Tenants should have control on administrative access to all their resources running. One of the way is to have audit-ability of admin access enabled at all the layers of stack (OS, networking, applications , databases) that can be auditable by the tenants. Provider may still be doing the administration but under strong   auditable environment. &lt;br /&gt;
# Virtual Private Cloud (VPC): It  is a private cloud existing within a shared or public cloud.   A VPC is a way to partition a public cloud (multi-tenancy) into quarantined virtual infrastructure [3] and link it back to the tenants internal resources by encrypted network links. &lt;br /&gt;
# Alternate assessment options or contractual exceptions if the auditing is required as per the consumer's security posture but provider does not allow it [6].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference:==&lt;br /&gt;
&lt;br /&gt;
# http://chucksblog.emc.com/chucks_blog/2010/01/thoughts-on-secure-multitenancy.html &lt;br /&gt;
# http://aws.amazon.com/vpc/ &lt;br /&gt;
# http://www.elasticvapor.com/2008/05/virtual-private-cloud-vpc.html &lt;br /&gt;
# http://blogs.gartner.com/thomas_bittman/2009/01/08/virtual-cloud-privacy-is-gray/ &lt;br /&gt;
# http://people.csail.mit.edu/tromer/papers/cloudsec.pdf &lt;br /&gt;
# http://www.cloudsecurityalliance.org/csaguide.pdf &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Cloud ‐ 10 Project]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;headertabs/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88152</id>
		<title>Cloud-10 Multi Tenancy and Physical Security</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Cloud-10_Multi_Tenancy_and_Physical_Security&amp;diff=88152"/>
				<updated>2010-08-29T19:42:01Z</updated>
		
		<summary type="html">&lt;p&gt;Vinaykbansal: /* Security Risks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==R7: Multi Tenancy and Physical Security ==&lt;br /&gt;
&lt;br /&gt;
Multi-tenancy in cloud means sharing of resources and services among multiple consumers and clients (tenants). It means physical resources (such as computing, networking, storage) and services are shared, also the administrative functionality and support may also be shared. One of the big driver for providers is to reduce cost by sharing and reusing resources among tenants.  &lt;br /&gt;
&lt;br /&gt;
In a multi-tenant environment a lot more security dependence on the logical segregation (at multiple layers) rather than the physical separation of resources. Some of the cloud providers due to mult-tenancy may not allow audit and assessment by a particular tenant within their shared infrastructure.&lt;br /&gt;
&lt;br /&gt;
==Security Risks==&lt;br /&gt;
&lt;br /&gt;
# '''Inadequate Logical Security Controls''': Physical resources (CPU, networking, storage/databases, application stack)  are shared between multiple tenants. That means dependence on logical segregation and other controls to ensure that one tenant deliberately or inadvertently can not interfere with the security ( confidentiality, integrity, availability) of the other tenants.&lt;br /&gt;
# '''Malicious or Ignorant Tenants''': If the provider has weaker logical controls between tenants, a malicious or an ignorant tenant may reduce the security posture of other tenants. &lt;br /&gt;
# '''Shared Services can become single point of failure''': If the provider has not architected well the common services, they can easily become single point of failure due to misuse or abuse by a tenant. &lt;br /&gt;
# '''Uncoordinated Change Controls and Mis configurations''': When multiple tenants are sharing the underlying infrastructure all changes needs to be well coordinated and tested . &lt;br /&gt;
# '''Co-mingled Data''' : To reduce cost providers may be storing the data from multiple tenants in same database table-spaces and backup tapes. Data destruction can become a challenge in multi-tenancy especially if data is stored in the shared media (databases, backups, archives).&lt;br /&gt;
&lt;br /&gt;
# SaaS: Multiple clients (tenants) may be sharing the same application stack ( database, app/web servers, networking). That means the data from multiple tenants may get stored in the same database, may get backed up and archived together, may be moving on common networking devices (unencrypted), and managed by common application processes. This puts a heavy emphasis on logical security built within the application to separate one tenant's users from others. &lt;br /&gt;
# PaaS: Platform stack is shared among the tenants. Vulnerability in the platform stack can allow bleeding between tenants. Shared data backups and archives. &lt;br /&gt;
# IaaS: Cross Virtual machine attacks. Cross network traffic listening. Co-residents with lower security posture, where they are less concerned about keeping their hosts hardened and patched [5]. Especially when these hosts gets compromised and owned by the attackers.&lt;br /&gt;
&lt;br /&gt;
==Countermeasures==&lt;br /&gt;
&lt;br /&gt;
# Tenants can always negotiate or demand from the cloud provider to have their own separate physical infrastructure, databases, storage, networking gears,.. . Isolation does play a  great role in the security field.  However, it does increase the cost for tenants/clients.    &lt;br /&gt;
# For encrypting the data and keeping it separate from other tenants , strong encryption complemented by tenant-owned key management is required.  In a virtualized environment, this means that encryption can be done granularly on a per-VM basis, with key management owned by the tenant and not the service provider [1].&lt;br /&gt;
# Tenants should have control on administrative access to all their resources running. One of the way is to have audit-ability of admin access enabled at all the layers of stack (OS, networking, applications , databases) that can be auditable by the tenants. Provider may still be doing the administration but under strong   auditable environment. &lt;br /&gt;
# Virtual Private Cloud (VPC): It  is a private cloud existing within a shared or public cloud.   A VPC is a way to partition a public cloud (multi-tenancy) into quarantined virtual infrastructure [3] and link it back to the tenants internal resources by encrypted network links. &lt;br /&gt;
# Alternate assessment options or contractual exceptions if the auditing is required as per the consumer's security posture but provider does not allow it [6].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference:==&lt;br /&gt;
&lt;br /&gt;
# http://chucksblog.emc.com/chucks_blog/2010/01/thoughts-on-secure-multitenancy.html &lt;br /&gt;
# http://aws.amazon.com/vpc/ &lt;br /&gt;
# http://www.elasticvapor.com/2008/05/virtual-private-cloud-vpc.html &lt;br /&gt;
# http://blogs.gartner.com/thomas_bittman/2009/01/08/virtual-cloud-privacy-is-gray/ &lt;br /&gt;
# http://people.csail.mit.edu/tromer/papers/cloudsec.pdf &lt;br /&gt;
# http://www.cloudsecurityalliance.org/csaguide.pdf &lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Cloud ‐ 10 Project]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;headertabs/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vinaykbansal</name></author>	</entry>

	</feed>