<?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=Shivang+Desai</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=Shivang+Desai"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Shivang_Desai"/>
		<updated>2026-06-01T10:11:29Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:Shivang_Desai&amp;diff=188828</id>
		<title>User:Shivang Desai</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:Shivang_Desai&amp;diff=188828"/>
				<updated>2015-01-31T06:03:43Z</updated>
		
		<summary type="html">&lt;p&gt;Shivang Desai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Certified Security Professional and Researcher, India. &lt;br /&gt;
Security is my passion and open source is my love.&lt;/div&gt;</summary>
		<author><name>Shivang Desai</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Mobile_Top_10_2014-M8&amp;diff=188827</id>
		<title>Mobile Top 10 2014-M8</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Mobile_Top_10_2014-M8&amp;diff=188827"/>
				<updated>2015-01-30T23:40:06Z</updated>
		
		<summary type="html">&lt;p&gt;Shivang Desai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[https://www.owasp.org/index.php/Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Risks Back To The Mobile Top Ten Main Page]&amp;lt;/center&amp;gt;&lt;br /&gt;
{{Top_10_2010:SubsectionColoredTemplate|&amp;lt;center&amp;gt;Security Decisions Via Untrusted Inputs&amp;lt;/center&amp;gt;||year=2014}}&lt;br /&gt;
{{Top_10_2010:SummaryTableHeaderBeginTemplate}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-1-Template|Exploitability|EASY}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-2-Template|Prevalence|COMMON}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-2-Template|Detectability|EASY}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-1-Template|Impact|SEVERE}}&lt;br /&gt;
{{Top_10_2010:SummaryTableHeaderEndTemplate}}&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;Threat Agents include entities that can pass untrusted inputs to the sensitive method calls. Examples of such entities but not limited, include users, malwares or a vulnerable app&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt; Exploitability of this vulnerability remains easy. &amp;lt;br&amp;gt; An attacker with access to app can intercept intermediate calls and manipulate results via parameter tampering. &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td colspan=2  {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;Developers generally use hidden fields and values or any hidden functionality to distinguish higher level users from lower level users. An attacker can intercept the calls (IPC or web service calls) and temper with such sensitive parameters. Weak implementation of such functionalities leads to improper behavior of an app and even granting higher level permissions to an attacker.This can easily be exploited through hooking functionality. &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;This vulnerability may lead to privilege escalation providing access of higher authorities and functionalities to an attacker. It can even bypass security mechanisms implemented by the app leading to loss of confidentiality and integrity. &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;This vulnerability leads to loss of reputation. &amp;lt;br&amp;gt;At the same time, impacting and harming the integrity and confidentiality. &amp;lt;/td&amp;gt;&lt;br /&gt;
{{Top_10_2010:SummaryTableEndTemplate}}&lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=1|risk=7}}&lt;br /&gt;
Your mobile application can accept data from all kinds of sources. In most cases this will be an Inter Process Communication (IPC) mechanism. In general try and adhere to the following IPC design patterns:&lt;br /&gt;
&lt;br /&gt;
* If there is a business requirement for IPC communication, the mobile application should restrict access to a white-list of trusted applications&lt;br /&gt;
* Sensitive actions which are triggered through IPC entry points should require user interaction before performing the action&lt;br /&gt;
* All input received from IPC entry points must undergo stringent input validation in order to prevent input driven attacks&lt;br /&gt;
* Do not pass any sensitive information through IPC mechanisms, as it may be susceptible to being read by third party applications under certain scenarios&lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=2|risk=7}}&lt;br /&gt;
iOS Specific Examples:&lt;br /&gt;
* Do not use the deprecated handleOpenURL method to handle URL Scheme calls. This method does not contain an argument containing the BundleID of the source application.&lt;br /&gt;
** Instead use the openURL:sourceApplication:annotation method and validation the sourceApplication argument against a white-list of trusted applications&lt;br /&gt;
*Do not use the iOS Pasteboard for IPC communications, as it is susceptible to being set or read by all third party apps on the device.  &lt;br /&gt;
 &lt;br /&gt;
Android Specific Examples&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=3|risk=7}}&lt;br /&gt;
Example Scenarios&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=4|risk=7}}&lt;br /&gt;
References&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/images/c/ca/ASDC12-An_InDepth_Introduction_to_the_Android_Permissions_Modeland_How_to_Secure_MultiComponent_Applications.pdf An In Depth Introduction to the Android Permissions Modeland How to Secure MultiComponent Applications]&lt;/div&gt;</summary>
		<author><name>Shivang Desai</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Mobile_Top_10_2014-M8&amp;diff=188826</id>
		<title>Mobile Top 10 2014-M8</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Mobile_Top_10_2014-M8&amp;diff=188826"/>
				<updated>2015-01-30T23:30:54Z</updated>
		
		<summary type="html">&lt;p&gt;Shivang Desai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[https://www.owasp.org/index.php/Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Risks Back To The Mobile Top Ten Main Page]&amp;lt;/center&amp;gt;&lt;br /&gt;
{{Top_10_2010:SubsectionColoredTemplate|&amp;lt;center&amp;gt;Security Decisions Via Untrusted Inputs&amp;lt;/center&amp;gt;||year=2014}}&lt;br /&gt;
{{Top_10_2010:SummaryTableHeaderBeginTemplate}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-1-Template|Exploitability|EASY}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-2-Template|Prevalence|COMMON}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-2-Template|Detectability|EASY}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-1-Template|Impact|SEVERE}}&lt;br /&gt;
{{Top_10_2010:SummaryTableHeaderEndTemplate}}&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;Threat Agents include entities that can pass untrusted inputs to the sensitive method calls. Examples of such entities but not limited, include users, malwares or a vulnerable app&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt; Attack Vector &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td colspan=2  {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;Developers generally use hidden fields and values or any hidden functionality to distinguish higher level users from lower level users. An attacker can intercept the calls (IPC or web service calls) and temper with such sensitive parameters. Weak implementation of such functionalities leads to improper behavior of an app and even granting higher level permissions to an attacker.&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;This vulnerability may lead to privilege escalation providing access of higher authorities and functionalities to an attacker. It can even bypass security mechanisms implemented by the app leading to loss of confidentiality and integrity. &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;This vulnerability leads to loss of reputation. &amp;lt;br&amp;gt;At the same time, impacting and harming the integrity and confidentiality. &amp;lt;/td&amp;gt;&lt;br /&gt;
{{Top_10_2010:SummaryTableEndTemplate}}&lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=1|risk=7}}&lt;br /&gt;
Your mobile application can accept data from all kinds of sources. In most cases this will be an Inter Process Communication (IPC) mechanism. In general try and adhere to the following IPC design patterns:&lt;br /&gt;
&lt;br /&gt;
* If there is a business requirement for IPC communication, the mobile application should restrict access to a white-list of trusted applications&lt;br /&gt;
* Sensitive actions which are triggered through IPC entry points should require user interaction before performing the action&lt;br /&gt;
* All input received from IPC entry points must undergo stringent input validation in order to prevent input driven attacks&lt;br /&gt;
* Do not pass any sensitive information through IPC mechanisms, as it may be susceptible to being read by third party applications under certain scenarios&lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=2|risk=7}}&lt;br /&gt;
iOS Specific Examples:&lt;br /&gt;
* Do not use the deprecated handleOpenURL method to handle URL Scheme calls. This method does not contain an argument containing the BundleID of the source application.&lt;br /&gt;
** Instead use the openURL:sourceApplication:annotation method and validation the sourceApplication argument against a white-list of trusted applications&lt;br /&gt;
*Do not use the iOS Pasteboard for IPC communications, as it is susceptible to being set or read by all third party apps on the device.  &lt;br /&gt;
 &lt;br /&gt;
Android Specific Examples&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=3|risk=7}}&lt;br /&gt;
Example Scenarios&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=4|risk=7}}&lt;br /&gt;
References&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/images/c/ca/ASDC12-An_InDepth_Introduction_to_the_Android_Permissions_Modeland_How_to_Secure_MultiComponent_Applications.pdf An In Depth Introduction to the Android Permissions Modeland How to Secure MultiComponent Applications]&lt;/div&gt;</summary>
		<author><name>Shivang Desai</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Mobile_Top_10_2014-M8&amp;diff=188824</id>
		<title>Mobile Top 10 2014-M8</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Mobile_Top_10_2014-M8&amp;diff=188824"/>
				<updated>2015-01-30T23:23:03Z</updated>
		
		<summary type="html">&lt;p&gt;Shivang Desai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[https://www.owasp.org/index.php/Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Risks Back To The Mobile Top Ten Main Page]&amp;lt;/center&amp;gt;&lt;br /&gt;
{{Top_10_2010:SubsectionColoredTemplate|&amp;lt;center&amp;gt;Security Decisions Via Untrusted Inputs&amp;lt;/center&amp;gt;||year=2014}}&lt;br /&gt;
{{Top_10_2010:SummaryTableHeaderBeginTemplate}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-1-Template|Exploitability|EASY}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-2-Template|Prevalence|COMMON}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-2-Template|Detectability|EASY}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-1-Template|Impact|SEVERE}}&lt;br /&gt;
{{Top_10_2010:SummaryTableHeaderEndTemplate}}&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;Threat Agents include entities that can pass untrusted inputs to the sensitive method calls. Examples of such entities but not limited, include users, malwares or a vulnerable app&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt; Attack Vector Description &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td colspan=2  {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;Security Weakness Description &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;This vulnerability may lead to privilege escalation providing access of higher authorities and functionalities to an attacker. It can even bypass security mechanisms implemented by the app leading to loss of confidentiality and integrity. &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;This vulnerability leads to loss of reputation. &amp;lt;br&amp;gt;At the same time, impacting and harming the integrity and confidentiality. &amp;lt;/td&amp;gt;&lt;br /&gt;
{{Top_10_2010:SummaryTableEndTemplate}}&lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=1|risk=7}}&lt;br /&gt;
Your mobile application can accept data from all kinds of sources. In most cases this will be an Inter Process Communication (IPC) mechanism. In general try and adhere to the following IPC design patterns:&lt;br /&gt;
&lt;br /&gt;
* If there is a business requirement for IPC communication, the mobile application should restrict access to a white-list of trusted applications&lt;br /&gt;
* Sensitive actions which are triggered through IPC entry points should require user interaction before performing the action&lt;br /&gt;
* All input received from IPC entry points must undergo stringent input validation in order to prevent input driven attacks&lt;br /&gt;
* Do not pass any sensitive information through IPC mechanisms, as it may be susceptible to being read by third party applications under certain scenarios&lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=2|risk=7}}&lt;br /&gt;
iOS Specific Examples:&lt;br /&gt;
* Do not use the deprecated handleOpenURL method to handle URL Scheme calls. This method does not contain an argument containing the BundleID of the source application.&lt;br /&gt;
** Instead use the openURL:sourceApplication:annotation method and validation the sourceApplication argument against a white-list of trusted applications&lt;br /&gt;
*Do not use the iOS Pasteboard for IPC communications, as it is susceptible to being set or read by all third party apps on the device.  &lt;br /&gt;
 &lt;br /&gt;
Android Specific Examples&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=3|risk=7}}&lt;br /&gt;
Example Scenarios&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=4|risk=7}}&lt;br /&gt;
References&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/images/c/ca/ASDC12-An_InDepth_Introduction_to_the_Android_Permissions_Modeland_How_to_Secure_MultiComponent_Applications.pdf An In Depth Introduction to the Android Permissions Modeland How to Secure MultiComponent Applications]&lt;/div&gt;</summary>
		<author><name>Shivang Desai</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Mobile_Top_10_2014-M8&amp;diff=188823</id>
		<title>Mobile Top 10 2014-M8</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Mobile_Top_10_2014-M8&amp;diff=188823"/>
				<updated>2015-01-30T23:22:43Z</updated>
		
		<summary type="html">&lt;p&gt;Shivang Desai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[https://www.owasp.org/index.php/Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Risks Back To The Mobile Top Ten Main Page]&amp;lt;/center&amp;gt;&lt;br /&gt;
{{Top_10_2010:SubsectionColoredTemplate|&amp;lt;center&amp;gt;Security Decisions Via Untrusted Inputs&amp;lt;/center&amp;gt;||year=2014}}&lt;br /&gt;
{{Top_10_2010:SummaryTableHeaderBeginTemplate}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-1-Template|Exploitability|EASY}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-2-Template|Prevalence|COMMON}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-2-Template|Detectability|EASY}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-1-Template|Impact|SEVERE}}&lt;br /&gt;
{{Top_10_2010:SummaryTableHeaderEndTemplate}}&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;Threat Agents include entities that can pass untrusted inputs to the sensitive method calls. Examples of such entities but not limited, include users, malwares or a vulnerable app&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt; Attack Vector Description &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td colspan=2  {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;Security Weakness Description &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;This vulnerability may lead to privilege escalation providing access of higher authorities and functionalities to an attacker. It can even bypass security mechanisms implemented by the app leading to loss of confidentiality and integrity. &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;This vulnerability leads to loss of reputation. &amp;lt;/br&amp;gt;At the same time, impacting and harming the integrity and confidentiality. &amp;lt;/td&amp;gt;&lt;br /&gt;
{{Top_10_2010:SummaryTableEndTemplate}}&lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=1|risk=7}}&lt;br /&gt;
Your mobile application can accept data from all kinds of sources. In most cases this will be an Inter Process Communication (IPC) mechanism. In general try and adhere to the following IPC design patterns:&lt;br /&gt;
&lt;br /&gt;
* If there is a business requirement for IPC communication, the mobile application should restrict access to a white-list of trusted applications&lt;br /&gt;
* Sensitive actions which are triggered through IPC entry points should require user interaction before performing the action&lt;br /&gt;
* All input received from IPC entry points must undergo stringent input validation in order to prevent input driven attacks&lt;br /&gt;
* Do not pass any sensitive information through IPC mechanisms, as it may be susceptible to being read by third party applications under certain scenarios&lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=2|risk=7}}&lt;br /&gt;
iOS Specific Examples:&lt;br /&gt;
* Do not use the deprecated handleOpenURL method to handle URL Scheme calls. This method does not contain an argument containing the BundleID of the source application.&lt;br /&gt;
** Instead use the openURL:sourceApplication:annotation method and validation the sourceApplication argument against a white-list of trusted applications&lt;br /&gt;
*Do not use the iOS Pasteboard for IPC communications, as it is susceptible to being set or read by all third party apps on the device.  &lt;br /&gt;
 &lt;br /&gt;
Android Specific Examples&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=3|risk=7}}&lt;br /&gt;
Example Scenarios&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=4|risk=7}}&lt;br /&gt;
References&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/images/c/ca/ASDC12-An_InDepth_Introduction_to_the_Android_Permissions_Modeland_How_to_Secure_MultiComponent_Applications.pdf An In Depth Introduction to the Android Permissions Modeland How to Secure MultiComponent Applications]&lt;/div&gt;</summary>
		<author><name>Shivang Desai</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Mobile_Top_10_2014-M8&amp;diff=188822</id>
		<title>Mobile Top 10 2014-M8</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Mobile_Top_10_2014-M8&amp;diff=188822"/>
				<updated>2015-01-30T23:19:36Z</updated>
		
		<summary type="html">&lt;p&gt;Shivang Desai: Adding description for Technical Impacts.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[https://www.owasp.org/index.php/Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Risks Back To The Mobile Top Ten Main Page]&amp;lt;/center&amp;gt;&lt;br /&gt;
{{Top_10_2010:SubsectionColoredTemplate|&amp;lt;center&amp;gt;Security Decisions Via Untrusted Inputs&amp;lt;/center&amp;gt;||year=2014}}&lt;br /&gt;
{{Top_10_2010:SummaryTableHeaderBeginTemplate}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-1-Template|Exploitability|EASY}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-2-Template|Prevalence|COMMON}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-2-Template|Detectability|EASY}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-1-Template|Impact|SEVERE}}&lt;br /&gt;
{{Top_10_2010:SummaryTableHeaderEndTemplate}}&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;Threat Agents include entities that can pass untrusted inputs to the sensitive method calls. Examples of such entities but not limited, include users, malwares or a vulnerable app&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt; Attack Vector Description &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td colspan=2  {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;Security Weakness Description &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;This vulnerability may lead to privilege escalation providing access of higher authorities and functionalities to an attacker. It can even bypass security mechanisms implemented by the app leading to loss of confidentiality and integrity. &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;Business Impacts &amp;lt;/td&amp;gt;&lt;br /&gt;
{{Top_10_2010:SummaryTableEndTemplate}}&lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=1|risk=7}}&lt;br /&gt;
Your mobile application can accept data from all kinds of sources. In most cases this will be an Inter Process Communication (IPC) mechanism. In general try and adhere to the following IPC design patterns:&lt;br /&gt;
&lt;br /&gt;
* If there is a business requirement for IPC communication, the mobile application should restrict access to a white-list of trusted applications&lt;br /&gt;
* Sensitive actions which are triggered through IPC entry points should require user interaction before performing the action&lt;br /&gt;
* All input received from IPC entry points must undergo stringent input validation in order to prevent input driven attacks&lt;br /&gt;
* Do not pass any sensitive information through IPC mechanisms, as it may be susceptible to being read by third party applications under certain scenarios&lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=2|risk=7}}&lt;br /&gt;
iOS Specific Examples:&lt;br /&gt;
* Do not use the deprecated handleOpenURL method to handle URL Scheme calls. This method does not contain an argument containing the BundleID of the source application.&lt;br /&gt;
** Instead use the openURL:sourceApplication:annotation method and validation the sourceApplication argument against a white-list of trusted applications&lt;br /&gt;
*Do not use the iOS Pasteboard for IPC communications, as it is susceptible to being set or read by all third party apps on the device.  &lt;br /&gt;
 &lt;br /&gt;
Android Specific Examples&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=3|risk=7}}&lt;br /&gt;
Example Scenarios&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=4|risk=7}}&lt;br /&gt;
References&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/images/c/ca/ASDC12-An_InDepth_Introduction_to_the_Android_Permissions_Modeland_How_to_Secure_MultiComponent_Applications.pdf An In Depth Introduction to the Android Permissions Modeland How to Secure MultiComponent Applications]&lt;/div&gt;</summary>
		<author><name>Shivang Desai</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Mobile_Top_10_2014-M8&amp;diff=188821</id>
		<title>Mobile Top 10 2014-M8</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Mobile_Top_10_2014-M8&amp;diff=188821"/>
				<updated>2015-01-30T23:09:37Z</updated>
		
		<summary type="html">&lt;p&gt;Shivang Desai: Adding description for Threat Agents.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;[https://www.owasp.org/index.php/Projects/OWASP_Mobile_Security_Project_-_Top_Ten_Mobile_Risks Back To The Mobile Top Ten Main Page]&amp;lt;/center&amp;gt;&lt;br /&gt;
{{Top_10_2010:SubsectionColoredTemplate|&amp;lt;center&amp;gt;Security Decisions Via Untrusted Inputs&amp;lt;/center&amp;gt;||year=2014}}&lt;br /&gt;
{{Top_10_2010:SummaryTableHeaderBeginTemplate}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-1-Template|Exploitability|EASY}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-2-Template|Prevalence|COMMON}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-2-Template|Detectability|EASY}}&lt;br /&gt;
{{Top_10_2010:SummaryTableValue-1-Template|Impact|SEVERE}}&lt;br /&gt;
{{Top_10_2010:SummaryTableHeaderEndTemplate}}&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;Threat Agents include entities that can pass untrusted inputs to the sensitive method calls. Examples of such entities but not limited, include users, malwares or a vulnerable app&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt; Attack Vector Description &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td colspan=2  {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;Security Weakness Description &amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;Technical Impacts&amp;lt;/td&amp;gt;&lt;br /&gt;
     &amp;lt;td {{Template:Top 10 2010:SummaryTableRowStyleTemplate}}&amp;gt;Business Impacts &amp;lt;/td&amp;gt;&lt;br /&gt;
{{Top_10_2010:SummaryTableEndTemplate}}&lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=1|risk=7}}&lt;br /&gt;
Your mobile application can accept data from all kinds of sources. In most cases this will be an Inter Process Communication (IPC) mechanism. In general try and adhere to the following IPC design patterns:&lt;br /&gt;
&lt;br /&gt;
* If there is a business requirement for IPC communication, the mobile application should restrict access to a white-list of trusted applications&lt;br /&gt;
* Sensitive actions which are triggered through IPC entry points should require user interaction before performing the action&lt;br /&gt;
* All input received from IPC entry points must undergo stringent input validation in order to prevent input driven attacks&lt;br /&gt;
* Do not pass any sensitive information through IPC mechanisms, as it may be susceptible to being read by third party applications under certain scenarios&lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=2|risk=7}}&lt;br /&gt;
iOS Specific Examples:&lt;br /&gt;
* Do not use the deprecated handleOpenURL method to handle URL Scheme calls. This method does not contain an argument containing the BundleID of the source application.&lt;br /&gt;
** Instead use the openURL:sourceApplication:annotation method and validation the sourceApplication argument against a white-list of trusted applications&lt;br /&gt;
*Do not use the iOS Pasteboard for IPC communications, as it is susceptible to being set or read by all third party apps on the device.  &lt;br /&gt;
 &lt;br /&gt;
Android Specific Examples&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=3|risk=7}}&lt;br /&gt;
Example Scenarios&lt;br /&gt;
{{Mobile_Top_10_2012:SubsectionAdvancedTemplate|type={{Mobile_Top_10_2012:StyleTemplate}}|number=4|risk=7}}&lt;br /&gt;
References&lt;br /&gt;
&lt;br /&gt;
[https://www.owasp.org/images/c/ca/ASDC12-An_InDepth_Introduction_to_the_Android_Permissions_Modeland_How_to_Secure_MultiComponent_Applications.pdf An In Depth Introduction to the Android Permissions Modeland How to Secure MultiComponent Applications]&lt;/div&gt;</summary>
		<author><name>Shivang Desai</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Blind_SQL_Injection&amp;diff=157315</id>
		<title>Blind SQL Injection</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Blind_SQL_Injection&amp;diff=157315"/>
				<updated>2013-08-26T10:22:19Z</updated>
		
		<summary type="html">&lt;p&gt;Shivang Desai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
[[Category:Security Focus Area]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Blind SQL (Structured Query Language) injection is a type of [[SQL Injection]] attack that asks the database true or false questions and determines the answer based on the applications response. This attack is often used when the web application is configured to show generic error messages, but has not mitigated the code that is vulnerable to SQL injection.&lt;br /&gt;
&lt;br /&gt;
When an attacker exploits SQL injection, sometimes the web application displays error messages from the database complaining that the SQL Query's syntax is incorrect. Blind SQL injection is nearly identical to normal [[SQL Injection]], the only difference being the way the data is retrieved from the database. When the database does not output data to the web page, an attacker is forced to steal data by asking the database a series of true or false questions. This makes exploiting the SQL Injection vulnerability more difficult, but not impossible. .&lt;br /&gt;
&lt;br /&gt;
==Threat Modeling==&lt;br /&gt;
Same as for [[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
==Risk Factors==&lt;br /&gt;
Same as for [[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
==Examples ==&lt;br /&gt;
An attacker may verify whether a sent request returned true or false in a few ways:&lt;br /&gt;
&lt;br /&gt;
===Content-based===&lt;br /&gt;
Using a simple page, which displays an article with given ID as the parameter, the attacker may perform a couple of simple tests to determine if the page is vulnerable to SQL Injection attacks.&lt;br /&gt;
&lt;br /&gt;
Example URL:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://newspaper.com/items.php?id=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
sends the following query to the database:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT title, description, body FROM items WHERE ID = 2&lt;br /&gt;
&amp;lt;/prE&amp;gt;&lt;br /&gt;
The attacker may then try to inject a query that returns 'false':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://newspaper.com/items.php?id=2 and 1=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now the SQL query should looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT title, description, body FROM items WHERE ID = 2 and 1=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the web application is vulnerable to SQL Injection, then it probably will not return anything. To make sure, the attacker will inject a query that will return 'true':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://newspaper.com/items.php?id=2 and 1=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the content of the page that returns 'true' is different than that of the page that returns 'false', then the attacker is able to distinguish when the executed query returns true or false.&lt;br /&gt;
&lt;br /&gt;
Once this has been verified, the only limitations are privileges set up by the database administrator, different SQL syntax, and the attacker's imagination.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Time-based===&lt;br /&gt;
&lt;br /&gt;
This type of blind SQL injection relies on the database pausing for a specified amount of time, then returning the results, indicating successful SQL query executing. Using this method, an attacker enumerates each letter of the desired piece of data using the following logic:&lt;br /&gt;
&lt;br /&gt;
If the first letter of the first database's name is an 'A', wait for 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If the first letter of the first database's name is an 'B', wait for 10 seconds. etc.&lt;br /&gt;
&lt;br /&gt;
'''Microsoft SQL Server'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://www.site.com/vulnerable.php?id=1' waitfor delay '00:00:10'--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''MySQL'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT IF(expression, true, false)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Using some time-taking operation e.g. BENCHMARK(), will delay server&lt;br /&gt;
responses if the expression is True.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BENCHMARK(5000000,ENCODE('MSG','by 5 seconds'))&amp;lt;/pre&amp;gt; - will execute the ENCODE function 5000000 times.&lt;br /&gt;
&lt;br /&gt;
Depending on the database server's performance and load, it should&lt;br /&gt;
take just a moment to finish this operation. The important thing is,&lt;br /&gt;
from the attacker's point of view, to specify a high-enough number of BENCHMARK()&lt;br /&gt;
function repetitions to affect the database&lt;br /&gt;
response time in a noticeable way.&lt;br /&gt;
&lt;br /&gt;
Example combination of both queries:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 UNION SELECT IF(SUBSTRING(user_password,1,1) = CHAR(50),BENCHMARK(5000000,ENCODE('MSG','by 5 seconds')),null) FROM users WHERE user_id = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the database response took a long time, we may expect that the first user password character with user_id = 1 is character '2'.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(CHAR(50) == '2')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Using this method for the rest of characters, it's possible to enumerate entire passwords stored in the database. This method works even when the attacker injects the SQL queries and the content of the vulnerable page doesn't change.&lt;br /&gt;
&lt;br /&gt;
Obviously, in this example, the names of the tables and the number of columns was specified. However, it's possible to guess them or check with a trial and error method.&lt;br /&gt;
&lt;br /&gt;
Databases other than MySQL also have time-based functions which allow them to be used for time-based attacks:&lt;br /&gt;
* MS SQL 'WAIT FOR DELAY '0:0:10''&lt;br /&gt;
* PostgreSQL - pg_sleep()&lt;br /&gt;
&lt;br /&gt;
Conducting Blind_SQL_Injection attacks manually is very time consuming, but there are a lot of tools which automate this process. One of them is SQLMap (http://sqlmap.org/) partly developed within OWASP grant program. On the other hand, tools of this kind are very sensitive to even small deviations from the rule. This includes:&lt;br /&gt;
&lt;br /&gt;
* scanning other website clusters, where clocks are not ideally synchronized,&lt;br /&gt;
* WWW services where argument acquiring method was changed, e.g.  from /index.php?ID=10 to /ID,10&lt;br /&gt;
&lt;br /&gt;
===Remote Database Fingerprinting===&lt;br /&gt;
&lt;br /&gt;
If the attacker is able to determine when his query returns True or False, then he may fingerprint the RDBMS. This will make the whole attack much easier. If the time-based approach is used, this helps determine what type of database is in use. Another popular methods to do this is to call functions which will return the current date. MySQL, MSSQL, and Oracle have different functions for that, respectively ''now()'', ''getdate()'', and ''sysdate()''.&lt;br /&gt;
&lt;br /&gt;
==Related [[Threat Agents]]==&lt;br /&gt;
Same as for [[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
==Related [[Attacks]]==&lt;br /&gt;
* [[Blind_XPath_Injection]]&lt;br /&gt;
* [[SQL_Injection]]&lt;br /&gt;
* [[XPATH_Injection]]&lt;br /&gt;
* [[LDAP_injection]]&lt;br /&gt;
* [[Server-Side_Includes_%28SSI%29_Injection]]&lt;br /&gt;
&lt;br /&gt;
==Related [[Vulnerabilities]]==&lt;br /&gt;
* [[Injection_problem]]&lt;br /&gt;
&lt;br /&gt;
==Related [[Controls]]==&lt;br /&gt;
* [[:Category:Input Validation]]&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Guide Project|OWASP Development Guide]] article on how to [[Guide to SQL Injection | Avoid SQL Injection]] Vulnerabilities.&lt;br /&gt;
&amp;lt;br&amp;gt;See the OWASP [[SQL Injection Prevention Cheat Sheet]].&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Code Review Project|OWASP Code Review Guide]] article on how to [[Reviewing Code for SQL Injection|Review Code for SQL Injection]] Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Testing Project|OWASP Testing Guide]] article on how to [[Testing for SQL Injection    (OWASP-DV-005)|Test for SQL Injection]] Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* http://www.cgisecurity.com/questions/blindsql.shtml&lt;br /&gt;
* http://www.imperva.com/application_defense_center/white_papers/blind_sql_server_injection.html&lt;br /&gt;
* http://www.securitydocs.com/library/2651&lt;br /&gt;
* http://seclists.org/bugtraq/2005/Feb/0288.html&lt;br /&gt;
* http://ferruh.mavituna.com/makale/sql-injection-cheatsheet/&lt;br /&gt;
&lt;br /&gt;
'''Online Resources'''&lt;br /&gt;
* [http://www.nccgroup.com/Libraries/Document_Downloads/more__Advanced_SQL_Injection.sflb.ashx more Advanced SQL Injection] - by NGS&lt;br /&gt;
* [http://www.blackhat.com/presentations/bh-usa-04/bh-us-04-hotchkies/bh-us-04-hotchkies.pdf Blind SQL Injection Automation Techniques] - Black Hat Pdf&lt;br /&gt;
* [http://seclists.org/lists/bugtraq/2005/Feb/0288.html Blind Sql-Injection in MySQL Databases]&lt;br /&gt;
* [http://www.cgisecurity.com/questions/blindsql.shtml Cgisecurity.com: What is Blind SQL Injection?]&lt;br /&gt;
* Kevin Spett from SPI Dynamics: http://www.net-security.org/dl/articles/Blind_SQLInjection.pdf&lt;br /&gt;
* http://www.imperva.com/resources/whitepapers.asp?t=ADC&lt;br /&gt;
* [https://www.owasp.org/images/7/74/Advanced_SQL_Injection.ppt Advanced SQL Injection]&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&lt;br /&gt;
* [http://www.sqlpowerinjector.com/ SQL Power Injector]&lt;br /&gt;
* [http://www.0x90.org/releases/absinthe/ Absinthe :: Automated Blind SQL Injection] // ver1.3.1&lt;br /&gt;
* [http://www.securiteam.com/tools/5IP0L20I0E.html SQLBrute - Multi Threaded Blind SQL Injection Bruteforcer] in Python&lt;br /&gt;
* [[:Category:OWASP_SQLiX_Project|SQLiX - SQL Injection Scanner]] in Perl&lt;br /&gt;
* [http://sqlmap.org/ sqlmap, automatic SQL injection tool] in Python&lt;br /&gt;
* [https://code.google.com/p/bsqlbf-v2/ bsqlbf, a blind SQL injection tool] in Perl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Injection]]&lt;br /&gt;
[[Category: Attack]]&lt;/div&gt;</summary>
		<author><name>Shivang Desai</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Blind_SQL_Injection&amp;diff=157314</id>
		<title>Blind SQL Injection</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Blind_SQL_Injection&amp;diff=157314"/>
				<updated>2013-08-26T10:21:26Z</updated>
		
		<summary type="html">&lt;p&gt;Shivang Desai: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
[[Category:Security Focus Area]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Blind SQL (Structured Query Language) injection is a type of [[SQL Injection]] attack that asks the database true or false questions and determines the answer based on the applications response. This attack is often used when the web application is configured to show generic error messages, but has not mitigated the code that is vulnerable to SQL injection.&lt;br /&gt;
&lt;br /&gt;
When an attacker exploits SQL injection, sometimes the web application displays error messages from the database complaining that the SQL Query's syntax is incorrect. Blind SQL injection is nearly identical to normal [[SQL Injection]], the only difference being the way the data is retrieved from the database. When the database does not output data to the web page, an attacker is forced to steal data by asking the database a series of true or false questions. This makes exploiting the SQL Injection vulnerability more difficult, but not impossible. .&lt;br /&gt;
&lt;br /&gt;
==Threat Modeling==&lt;br /&gt;
Same as for [[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
==Risk Factors==&lt;br /&gt;
Same as for [[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
==Examples ==&lt;br /&gt;
An attacker may verify whether a sent request returned true or false in a few ways:&lt;br /&gt;
&lt;br /&gt;
===Content-based===&lt;br /&gt;
Using a simple page, which displays an article with given ID as the parameter, the attacker may perform a couple of simple tests to determine if the page is vulnerable to SQL Injection attacks.&lt;br /&gt;
&lt;br /&gt;
Example URL:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://newspaper.com/items.php?id=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
sends the following query to the database:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT title, description, body FROM items WHERE ID = 2&lt;br /&gt;
&amp;lt;/prE&amp;gt;&lt;br /&gt;
The attacker may then try to inject a query that returns 'false':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://newspaper.com/items.php?id=2 and 1=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Now the SQL query should looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT title, description, body FROM items WHERE ID = 2 and 1=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the web application is vulnerable to SQL Injection, then it probably will not return anything. To make sure, the attacker will inject a query that will return 'true':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://newspaper.com/items.php?id=2 and 1=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the content of the page that returns 'true' is different than that of the page that returns 'false', then the attacker is able to distinguish when the executed query returns true or false.&lt;br /&gt;
&lt;br /&gt;
Once this has been verified, the only limitations are privileges set up by the database administrator, different SQL syntax, and the attacker's imagination.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Time-based===&lt;br /&gt;
&lt;br /&gt;
This type of blind SQL injection relies on the database pausing for a specified amount of time, then returning the results, indicating successful SQL query executing. Using this method, an attacker enumerates each letter of the desired piece of data using the following logic:&lt;br /&gt;
&lt;br /&gt;
If the first letter of the first database's name is an 'A', wait for 10 seconds.&lt;br /&gt;
&lt;br /&gt;
If the first letter of the first database's name is an 'B', wait for 10 seconds. etc.&lt;br /&gt;
&lt;br /&gt;
'''Microsoft SQL Server'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://www.site.com/vulnerable.php?id=1' waitfor delay '00:00:10'--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''MySQL'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT IF(expression, true, false)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Using some time-taking operation e.g. BENCHMARK(), will delay server&lt;br /&gt;
responses if the expression is True.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BENCHMARK(5000000,ENCODE('MSG','by 5 seconds'))&amp;lt;/pre&amp;gt; - will execute the ENCODE function 5000000 times.&lt;br /&gt;
&lt;br /&gt;
Depending on the database server's performance and load, it should&lt;br /&gt;
take just a moment to finish this operation. The important thing is,&lt;br /&gt;
from the attacker's point of view, to specify a high-enough number of BENCHMARK()&lt;br /&gt;
function repetitions to affect the database&lt;br /&gt;
response time in a noticeable way.&lt;br /&gt;
&lt;br /&gt;
Example combination of both queries:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 UNION SELECT IF(SUBSTRING(user_password,1,1) = CHAR(50),BENCHMARK(5000000,ENCODE('MSG','by 5 seconds')),null) FROM users WHERE user_id = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the database response took a long time, we may expect that the first user password character with user_id = 1 is character '2'.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(CHAR(50) == '2')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Using this method for the rest of characters, it's possible to enumerate entire passwords stored in the database. This method works even when the attacker injects the SQL queries and the content of the vulnerable page doesn't change.&lt;br /&gt;
&lt;br /&gt;
Obviously, in this example, the names of the tables and the number of columns was specified. However, it's possible to guess them or check with a trial and error method.&lt;br /&gt;
&lt;br /&gt;
Databases other than MySQL also have time-based functions which allow them to be used for time-based attacks:&lt;br /&gt;
* MS SQL 'WAIT FOR DELAY '0:0:10''&lt;br /&gt;
* PostgreSQL - pg_sleep()&lt;br /&gt;
&lt;br /&gt;
Conducting Blind_SQL_Injection attacks manually is very time consuming, but there are a lot of tools which automate this process. One of them is SQLMap (http://sqlmap.org/) partly developed within OWASP grant program. On the other hand, tools of this kind are very sensitive to even small deviations from the rule. This includes:&lt;br /&gt;
&lt;br /&gt;
* scanning other website clusters, where clocks are not ideally synchronized,&lt;br /&gt;
* WWW services where argument acquiring method was changed, e.g.  from /index.php?ID=10 to /ID,10&lt;br /&gt;
&lt;br /&gt;
===Remote Database Fingerprinting===&lt;br /&gt;
&lt;br /&gt;
If the attacker is able to determine when his query returns True or False, then he may fingerprint the RDBMS. This will make the whole attack much easier. If the time-based approach is used, this helps determine what type of database is in use. Another popular methods to do this is to call functions which will return the current date. MySQL, MSSQL, and Oracle have different functions for that, respectively ''now()'', ''getdate()'', and ''sysdate()''.&lt;br /&gt;
&lt;br /&gt;
==Related [[Threat Agents]]==&lt;br /&gt;
Same as for [[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
==Related [[Attacks]]==&lt;br /&gt;
* [[Blind_XPath_Injection]]&lt;br /&gt;
* [[SQL_Injection]]&lt;br /&gt;
* [[XPATH_Injection]]&lt;br /&gt;
* [[LDAP_injection]]&lt;br /&gt;
* [[Server-Side_Includes_%28SSI%29_Injection]]&lt;br /&gt;
&lt;br /&gt;
==Related [[Vulnerabilities]]==&lt;br /&gt;
* [[Injection_problem]]&lt;br /&gt;
&lt;br /&gt;
==Related [[Controls]]==&lt;br /&gt;
* [[:Category:Input Validation]]&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Guide Project|OWASP Development Guide]] article on how to [[Guide to SQL Injection | Avoid SQL Injection]] Vulnerabilities.&lt;br /&gt;
&amp;lt;br&amp;gt;See the OWASP [[SQL Injection Prevention Cheat Sheet]].&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Code Review Project|OWASP Code Review Guide]] article on how to [[Reviewing Code for SQL Injection|Review Code for SQL Injection]] Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Testing Project|OWASP Testing Guide]] article on how to [[Testing for SQL Injection    (OWASP-DV-005)|Test for SQL Injection]] Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* http://www.cgisecurity.com/questions/blindsql.shtml&lt;br /&gt;
* http://www.imperva.com/application_defense_center/white_papers/blind_sql_server_injection.html&lt;br /&gt;
* http://www.securitydocs.com/library/2651&lt;br /&gt;
* http://seclists.org/bugtraq/2005/Feb/0288.html&lt;br /&gt;
* http://ferruh.mavituna.com/makale/sql-injection-cheatsheet/&lt;br /&gt;
&lt;br /&gt;
'''Online Resources'''&lt;br /&gt;
* [http://www.nccgroup.com/Libraries/Document_Downloads/more__Advanced_SQL_Injection.sflb.ashx more Advanced SQL Injection] - by NGS&lt;br /&gt;
* [http://www.blackhat.com/presentations/bh-usa-04/bh-us-04-hotchkies/bh-us-04-hotchkies.pdf Blind SQL Injection Automation Techniques] - Black Hat Pdf&lt;br /&gt;
* [http://seclists.org/lists/bugtraq/2005/Feb/0288.html Blind Sql-Injection in MySQL Databases]&lt;br /&gt;
* [http://www.cgisecurity.com/questions/blindsql.shtml Cgisecurity.com: What is Blind SQL Injection?]&lt;br /&gt;
* Kevin Spett from SPI Dynamics: http://www.net-security.org/dl/articles/Blind_SQLInjection.pdf&lt;br /&gt;
* http://www.imperva.com/resources/whitepapers.asp?t=ADC&lt;br /&gt;
* [https://www.owasp.org/images/7/74/Advanced_SQL_Injection.ppt Advanced SQL Injection]&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&lt;br /&gt;
* [http://www.sqlpowerinjector.com/ SQL Power Injector]&lt;br /&gt;
* [http://www.0x90.org/releases/absinthe/ Absinthe :: Automated Blind SQL Injection] // ver1.3.1&lt;br /&gt;
* [http://www.securiteam.com/tools/5IP0L20I0E.html SQLBrute - Multi Threaded Blind SQL Injection Bruteforcer] in Python&lt;br /&gt;
* [[:Category:OWASP_SQLiX_Project|SQLiX - SQL Injection Scanner]] in Perl&lt;br /&gt;
* [http://sqlmap.org/ sqlmap, automatic SQL injection tool] in Python&lt;br /&gt;
* [https://code.google.com/p/bsqlbf-v2/ bsqlbf, a blind SQL injection tool] in Perl&lt;br /&gt;
* [http://sqlmap.org/ open source SQL injection tool]&lt;br /&gt;
&lt;br /&gt;
[[Category:Injection]]&lt;br /&gt;
[[Category: Attack]]&lt;/div&gt;</summary>
		<author><name>Shivang Desai</name></author>	</entry>

	</feed>