<?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=Manionc</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=Manionc"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Manionc"/>
		<updated>2026-04-18T10:18:44Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17945</id>
		<title>Social Engineering</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17945"/>
				<updated>2007-04-19T18:58:59Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Definition ==&lt;br /&gt;
An attack based on deceiving end users or administrators at a target site. Social engineering attacks are are typically carried out by email or by contacting users by phone and impersonating an authorized user, in an attempt to gain unauthorized access to a system or application.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
'''Example #1:''' &lt;br /&gt;
*An attacker, posing an a system administrator, sends an email to several users on a large network (like a college campus network) and asks them to, “Please change your password to ‘xyz123’ and then notify me when you've completed this.”&lt;br /&gt;
*The attacker then logs in as one of the users from over the network. &lt;br /&gt;
*System bugs are then exploited to gain complete control of the system.&lt;br /&gt;
&lt;br /&gt;
== Countermeasures ==&lt;br /&gt;
* Educate staff&lt;br /&gt;
* Establish mechanisms for problem reporting and handling and make sure users know what those mechanisms are&lt;br /&gt;
* Identify security-related transactions that must be done in person&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related Attacks ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
Social Engineering [http://en.wikipedia.org/wiki/Social_engineering_(computer_security)#Quid_pro_quo]&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17944</id>
		<title>Social Engineering</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17944"/>
				<updated>2007-04-19T18:58:12Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Definition ==&lt;br /&gt;
An attack based on deceiving end users or administrators at a target site. Social engineering attacks are are typically carried out by email or by contacting users by phone and impersonating an authorized user, in an attempt to gain unauthorized access to a system or application.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
'''Example #1:''' &lt;br /&gt;
*An attacker, posing an a system administrator, sends an email to several users on a large network (like a college campus network) and asks them to, “Please change your password to ‘xyz123’ and then notify me when you've completed this.”&lt;br /&gt;
*The attacker then logs in as one of the users from over the network. &lt;br /&gt;
*System bugs are then exploited to gain complete control of the system.&lt;br /&gt;
&lt;br /&gt;
== Countermeasures ==&lt;br /&gt;
* Educate staff&lt;br /&gt;
* Establish mechanisms for problem reporting and handling and make sure users know what those mechanisms are&lt;br /&gt;
* Identify security-related transactions that must be done in person&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related Attacks ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
[http://en.wikipedia.org/wiki/Social_engineering_(computer_security)#Quid_pro_quo]&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17943</id>
		<title>Social Engineering</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17943"/>
				<updated>2007-04-19T18:56:46Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Definition ==&lt;br /&gt;
An attack based on deceiving end users or administrators at a target site. Social engineering attacks are are typically carried out by email or by contacting users by phone and impersonating an authorized user, in an attempt to gain unauthorized access to a system or application.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
'''Example #1:''' &lt;br /&gt;
*An attacker, posing an a system administrator, sends an email to several users on a large network (like a college campus network) and asks them to, “Please change your password to ‘xyz123’ and then notify me when you've completed this.”&lt;br /&gt;
*The attacker then logs in as one of the users from over the network. &lt;br /&gt;
*System bugs are then exploited to gain complete control of the system.&lt;br /&gt;
&lt;br /&gt;
== Countermeasures ==&lt;br /&gt;
* Educate staff&lt;br /&gt;
* Establish mechanisms for problem reporting and handling and make sure users know what those mechanisms are&lt;br /&gt;
* Identify security-related transactions that must be done in person&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related Attacks ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17942</id>
		<title>Social Engineering</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17942"/>
				<updated>2007-04-19T18:54:12Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Definition ==&lt;br /&gt;
An attack based on deceiving end users or administrators at a target site. Social engineering attacks are are typically carried out by email or by contacting users by phone and impersonating an authorized user, in an attempt to gain unauthorized access to a system or application.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
'''Example #1:''' &lt;br /&gt;
*An attacker, posing an a system administrator, sends an email to several users on a large network (like a college campus network) and asks them to, “Please change your password to ‘xyz123’ and then notify me when you've completed this.”&lt;br /&gt;
*The attacker then logs in as one of the users from over the network. &lt;br /&gt;
*System bugs are then exploited to gain complete control of the system.&lt;br /&gt;
&lt;br /&gt;
== Countermeasures ==&lt;br /&gt;
* Educate staff&lt;br /&gt;
* Establish mechanisms for problem reporting and handling and make sure users know what those mechanisms are&lt;br /&gt;
* Identify security-related transactions that must be done in person&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17941</id>
		<title>Social Engineering</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17941"/>
				<updated>2007-04-19T18:53:36Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* Definition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Definition ==&lt;br /&gt;
An attack based on deceiving end users or administrators at a target site. Social engineering attacks are are typically carried out by email or by contacting users by phone and impersonating an authorized user, in an attempt to gain unauthorized access to a system or application.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Example #1: (Believe it or not, this has worked for some attackers!)&lt;br /&gt;
*An attacker, posing an a system administrator, sends an email to several users on a large network (like a college campus network) and asks them to, “Please change your password to ‘xyz123’ and then notify me when you've completed this.”&lt;br /&gt;
*The attacker then logs in as one of the users from over the network. &lt;br /&gt;
*System bugs are then exploited to gain complete control of the system.&lt;br /&gt;
&lt;br /&gt;
== Countermeasures ==&lt;br /&gt;
* Educate staff&lt;br /&gt;
* Establish mechanisms for problem reporting and handling and make sure users know what those mechanisms are&lt;br /&gt;
* Identify security-related transactions that must be done in person&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17940</id>
		<title>Social Engineering</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17940"/>
				<updated>2007-04-19T18:51:46Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Definition ==&lt;br /&gt;
An attack based on deceiving users or administrators at the target site. Social engineering attacks are typically carried out by telephoning users or operators and pretending to be an authorized user, to attempt to gain illicit access to systems.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Example #1: (Believe it or not, this has worked for some attackers!)&lt;br /&gt;
*An attacker, posing an a system administrator, sends an email to several users on a large network (like a college campus network) and asks them to, “Please change your password to ‘xyz123’ and then notify me when you've completed this.”&lt;br /&gt;
*The attacker then logs in as one of the users from over the network. &lt;br /&gt;
*System bugs are then exploited to gain complete control of the system.&lt;br /&gt;
&lt;br /&gt;
== Countermeasures ==&lt;br /&gt;
* Educate staff&lt;br /&gt;
* Establish mechanisms for problem reporting and handling and make sure users know what those mechanisms are&lt;br /&gt;
* Identify security-related transactions that must be done in person&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17939</id>
		<title>Social Engineering</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17939"/>
				<updated>2007-04-19T18:50:53Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* Countermeasures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Social Engineering'''&lt;br /&gt;
&lt;br /&gt;
==Definition ==&lt;br /&gt;
An attack based on deceiving users or administrators at the target site. Social engineering attacks are typically carried out by telephoning users or operators and pretending to be an authorized user, to attempt to gain illicit access to systems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Example #1: (Believe it or not, this has worked for some attackers!)&lt;br /&gt;
1. An attacker, posing an a system administrator, sends an email to several users on a large network (like a college campus network) and asks them to, “Please change your password to ‘xyz123’ and then notify me when you've completed this.”&lt;br /&gt;
3. The attacker then logs in as one of the users from over the network. &lt;br /&gt;
4. System bugs are then exploited to gain complete control of the system.&lt;br /&gt;
&lt;br /&gt;
== Countermeasures ==&lt;br /&gt;
* Educate staff&lt;br /&gt;
* Establish mechanisms for problem reporting and handling and make sure users know what those mechanisms are&lt;br /&gt;
* Identify security-related transactions that must be done in person&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17938</id>
		<title>Social Engineering</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17938"/>
				<updated>2007-04-19T18:49:56Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Social Engineering'''&lt;br /&gt;
&lt;br /&gt;
==Definition ==&lt;br /&gt;
An attack based on deceiving users or administrators at the target site. Social engineering attacks are typically carried out by telephoning users or operators and pretending to be an authorized user, to attempt to gain illicit access to systems.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
Example #1: (Believe it or not, this has worked for some attackers!)&lt;br /&gt;
1. An attacker, posing an a system administrator, sends an email to several users on a large network (like a college campus network) and asks them to, “Please change your password to ‘xyz123’ and then notify me when you've completed this.”&lt;br /&gt;
3. The attacker then logs in as one of the users from over the network. &lt;br /&gt;
4. System bugs are then exploited to gain complete control of the system.&lt;br /&gt;
&lt;br /&gt;
== Countermeasures ==&lt;br /&gt;
– Educate staff&lt;br /&gt;
– Establish mechanisms for problem reporting and handling and make sure users know what those mechanisms are&lt;br /&gt;
– Identify security-related transactions that must be done in person&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17937</id>
		<title>Social Engineering</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Social_Engineering&amp;diff=17937"/>
				<updated>2007-04-19T18:48:19Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: New page: '''Social Engineering'''  '''Definition''' An attack based on deceiving users or administrators at the target site. Social engineering attacks are typically carried out by telephoning user...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Social Engineering'''&lt;br /&gt;
&lt;br /&gt;
'''Definition'''&lt;br /&gt;
An attack based on deceiving users or administrators at the target site. Social engineering attacks are typically carried out by telephoning users or operators and pretending to be an authorized user, to attempt to gain illicit access to systems.&lt;br /&gt;
&lt;br /&gt;
'''Examples'''&lt;br /&gt;
Example #1: (Believe it or not, this has worked for some attackers!)&lt;br /&gt;
1. An attacker, posing an a system administrator, sends an email to several users on a large network (like a college campus network) and asks them to, “Please change your password to ‘xyz123’ and then notify me when you've completed this.”&lt;br /&gt;
3. The attacker then logs in as one of the users from over the network. &lt;br /&gt;
4. System bugs are then exploited to gain complete control of the system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Countermeasures'''&lt;br /&gt;
– Educate staff&lt;br /&gt;
– Establish mechanisms for problem reporting and handling and make sure users know what those mechanisms are&lt;br /&gt;
– Identify security-related transactions that must be done in person&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_Table_of_Contents&amp;diff=10304</id>
		<title>OWASP Testing Guide Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_Table_of_Contents&amp;diff=10304"/>
				<updated>2006-10-09T13:39:53Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* The OWASP Testing Framework */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==[[Testing Guide Frontispiece|Frontispiece]]==&lt;br /&gt;
#Copyright and License&lt;br /&gt;
#Endorsements&lt;br /&gt;
#Trademarks&lt;br /&gt;
&lt;br /&gt;
==[[Testing Guide Introduction|Introduction]]==&lt;br /&gt;
#Performing An Application Security Review	&lt;br /&gt;
#Principles of Testing	&lt;br /&gt;
#Testing Techniques Explained&lt;br /&gt;
&lt;br /&gt;
==[[Methodologies Used]]==	&lt;br /&gt;
#Secure application design	&lt;br /&gt;
#Code Review (See the code review project)	&lt;br /&gt;
#*Overview	&lt;br /&gt;
#*Advantages and Disadvantages	&lt;br /&gt;
#Penetration Testing	&lt;br /&gt;
#*Overview	&lt;br /&gt;
#*Advantages and Disadvantages	&lt;br /&gt;
#The Need for a Balanced Approach	&lt;br /&gt;
#A Note about Web Application Scanners	&lt;br /&gt;
#A Note about Static Source Code Review Tools&lt;br /&gt;
&lt;br /&gt;
==[[Finding Specific Issues In a Non-Technical Manner]]==&lt;br /&gt;
#Threat Modeling Introduction	&lt;br /&gt;
#Design Reviews	&lt;br /&gt;
#Threat Modeling the Application	&lt;br /&gt;
#Policy Reviews	&lt;br /&gt;
#Requirements Analysis	&lt;br /&gt;
#Developer Interviews and Interaction	&lt;br /&gt;
&lt;br /&gt;
==[[:Category:OWASP Code Review Project|Finding Specific Vulnerabilities Using Source Code Review]]==&lt;br /&gt;
&lt;br /&gt;
''For code review please see the [[:Category:OWASP_Code_Review_Project|OWASP Code Review Project]]&lt;br /&gt;
&lt;br /&gt;
==[[Manual testing techniques]]==&lt;br /&gt;
#[[Business logic testing]]	&lt;br /&gt;
#[[Authentication Testing Guide|Authentication]]	&lt;br /&gt;
#[[How to perform cookie manipulation test|Cookie manipulation]]&lt;br /&gt;
#[[How to test for weak session tokens|Weak session tokens]]&lt;br /&gt;
#[[How to perform session riding test|Session riding test]]&lt;br /&gt;
#[[Testing for Cross site scripting vulnerabilities]]		&lt;br /&gt;
#[[Testing for vulnerable remember password implementation]]&lt;br /&gt;
#[[Weak Password Self-Reset Testing]]&lt;br /&gt;
#[[Testing for default or guessable user accounts and empty passwords]]	&lt;br /&gt;
#[[Testing for application layer Denial of Service (DoS) attacks]]	&lt;br /&gt;
#*[[DoS Testing: Locking Customer Accounts]]	&lt;br /&gt;
#*[[DoS Testing: Buffer Overflows]]	&lt;br /&gt;
#*[[DoS Testing: User Specified Object Allocation]]	&lt;br /&gt;
#*[[DoS Testing: User Input as a Loop Counter]]	&lt;br /&gt;
#*[[DoS Testing: Writing User Provided Data to Disk]]	&lt;br /&gt;
#*[[DoS Testing: Failure to Release Resources]]	&lt;br /&gt;
#*[[DoS Testing: Storing too Much Data in Session]]	&lt;br /&gt;
#[[Testing for buffer overflow]]	&lt;br /&gt;
#*[[Testing for heap overflow vulnerability]]&lt;br /&gt;
#*[[Testing for stack overflow vulnerability]]&lt;br /&gt;
#*[[Testing for format string vulnerability]]&lt;br /&gt;
#[[Testing for test and debug files]]	&lt;br /&gt;
#[[Testing file extensions handling]]	&lt;br /&gt;
#[[Testing for Old, backup and unreferenced files]]	&lt;br /&gt;
#[[Testing defense from Automatic Attacks]]	&lt;br /&gt;
#[[Infrastructure configuration management testing]]&lt;br /&gt;
#[[Application configuration management testing]]	&lt;br /&gt;
#[[SSL/TLS Testing: support of weak ciphers]]&lt;br /&gt;
#[[SSL Testing: certificate validity]]&lt;br /&gt;
#[[Web Services Security Testing]]&lt;br /&gt;
#[[Analysis about error codes]]&lt;br /&gt;
#[[Web services Testing]]&lt;br /&gt;
#*[[XML Structural Attacks]]&lt;br /&gt;
#*[[XML content-level attacks]]&lt;br /&gt;
#*[[HTTP GET parameters/REST attacks]]&lt;br /&gt;
#*[[Naughty SOAP attachments]]&lt;br /&gt;
#*[[Brute force attacks]]&lt;br /&gt;
&lt;br /&gt;
==[[The OWASP Testing Framework]]==&lt;br /&gt;
#Overview	&lt;br /&gt;
#Phase 1 — Before Development Begins	&lt;br /&gt;
#*Phase 1A: Policies and Standards Review	&lt;br /&gt;
#*Phase 1B: Develop Measurement and Metrics Criteria (Ensure Traceability)	&lt;br /&gt;
#Phase 2: During Definition and Design	&lt;br /&gt;
#*Phase 2A: Security Requirements Review	&lt;br /&gt;
#*Phase 2B: Design and Architecture Review	&lt;br /&gt;
#*Phase 2C: Create and Review UML Models	&lt;br /&gt;
#*Phase 2D: Create and Review Threat Models	&lt;br /&gt;
#Phase 3: During Development	&lt;br /&gt;
#*Phase 3A: Code Walkthroughs	&lt;br /&gt;
#*Phase 3B: Code Reviews	&lt;br /&gt;
#Phase 4: During Deployment	&lt;br /&gt;
#*Phase 4A: Application Penetration Testing	&lt;br /&gt;
#*Phase 4B: Configuration Management Testing	&lt;br /&gt;
#Phase 5: Maintenance and Operations	&lt;br /&gt;
#*Phase 5A: Conduct Operational Management Reviews	&lt;br /&gt;
#*Phase 5B: Conduct Periodic Health Checks	&lt;br /&gt;
#*Phase 5C: Ensure Change Verification	&lt;br /&gt;
#A Typical SDLC Testing Workflow	&lt;br /&gt;
#*	Figure 3: Typical SDLC Testing Workflow.&lt;br /&gt;
&lt;br /&gt;
==[[Appendix A: Testing Tools]]==	&lt;br /&gt;
#Source Code Analyzers	&lt;br /&gt;
#*Open Source / Freeware	&lt;br /&gt;
#*Commercial	&lt;br /&gt;
#Black Box Scanners	&lt;br /&gt;
#*Open Source	&lt;br /&gt;
#*Commercial	&lt;br /&gt;
#Other Tools	&lt;br /&gt;
#*Runtime Analysis	&lt;br /&gt;
#*Binary Analysis	&lt;br /&gt;
#*Requirements Management&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix B: Suggested Reading | Appendix B: Suggested Reading]]==&lt;br /&gt;
#Whitepapers	&lt;br /&gt;
#Books	&lt;br /&gt;
#Articles	&lt;br /&gt;
#Useful Websites	&lt;br /&gt;
#OWASP — http://www.owasp.org&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Testing Project]]&lt;br /&gt;
[[Category:Test]]&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix C: Fuzz Vectors| Appendix C: Fuzz Vectors]]==&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10197</id>
		<title>Definition for Security Assessment Techniques</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10197"/>
				<updated>2006-10-05T21:22:47Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* Techniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This article’s focus is to define, where practical, nomenclature and definitions of the differing security '''Assessment Techniques'''.  Agreement and establishment of these definitions are foundational to establishing the '''Assessment Levels''' later within this project.&lt;br /&gt;
&lt;br /&gt;
==Techniques==&lt;br /&gt;
&lt;br /&gt;
The following assessment techniques are proposed:&lt;br /&gt;
&lt;br /&gt;
* Application Security Threat Assessment&lt;br /&gt;
* Application Security Architecture Review&lt;br /&gt;
* Manual Security-Focused Code Review (Software Security Specialist)&lt;br /&gt;
* Automated Source Code Aanalysis (Tool-Based Static Code Analysis)&lt;br /&gt;
* Automated External Application Scanning (Tool Based) &lt;br /&gt;
* Manual Penetration Testing (Security Test Specialist)&lt;br /&gt;
&lt;br /&gt;
NOTE: these should probably link to full articles on each subject&lt;br /&gt;
&lt;br /&gt;
==Application Security Threat Assessment==&lt;br /&gt;
&lt;br /&gt;
Analyzes application architectural information to develop a threat profile for the application components.  &lt;br /&gt;
&lt;br /&gt;
* Identify the nature of the threats – the likely vulnerabilities of the given application and business.&lt;br /&gt;
&lt;br /&gt;
* Estimate the probability that those vulnerabilities might lead to a disruption and the type of impact – both expected and worst case – that might arise.&lt;br /&gt;
&lt;br /&gt;
* Analyze the different consequences and their likelihood of occurrence and determine which should be dealt with and what priority should be attached to mitigate.&lt;br /&gt;
&lt;br /&gt;
While the threats to each asset within the Application can be individually developed and mapped, a more efficient approach is to develop a master list of threat types and identify how these can be used to launch an attack on the Application and/or its components and potentially in turn the business itself.  A single threat may exploit a vulnerability to damage different types of assets. Conversely, several threat types may exploit disparate vulnerabilities in order to attack a single critical asset. Given the many-to-many relationships between threats and assets, it is best to use a simple representation of threat to asset mapping by listing threat types by each critical asset identified.&lt;br /&gt;
&lt;br /&gt;
A threat assessment should categorize threat types and threat agents but should focus on malicious threats and will not cover accidental and natural threats. The source of Malicious Threats (the attacker or perpetrator, in this context) can be classified as unauthorized and authorized. Threat vectors and operating environment more fully define how and why a particular “user” falls into one of these categories:&lt;br /&gt;
&lt;br /&gt;
Unauthorized: &lt;br /&gt;
* An attacker who does not have credentials to legitimately access the application&lt;br /&gt;
&lt;br /&gt;
Authorized:&lt;br /&gt;
* A legitimate user of the application&lt;br /&gt;
* A malicious insider&lt;br /&gt;
* A previously unauthorized user who has gained authorized access through compromise of a valid account or user session&lt;br /&gt;
&lt;br /&gt;
While the threat agents may have similar intent, varying reasons for engaging in illegal activities motivates them. Some authorized employees may willfully commit fraud for financial gain or engage in sabotage in order to disrupt routine operations. Theft, vandalism, intentional corruptions and alteration of information are also categorized as malicious threats.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* By using results from a threat assessment, the end-client is able to focus assessment (testing) activities based on business requirements and operational reality. &lt;br /&gt;
* Allows vulnerabilities discovered in other assessment types to be weighted and prioritized based on threat probability vs. raw vulnerability finding.&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee that all possible security threats will be uncovered. &lt;br /&gt;
* End-client must evaluate analysis and determine responses(s).&lt;br /&gt;
* Requires existence of application architecture documentation.&lt;br /&gt;
* Often confused with Risk Assessments, which weigh asset value, threat, and vulnerability in order to determine business risk.  Threat assessments focus on identifying only the threat component (vector(s) and probability).&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security resources (i.e.,  “bake in” security during application development begets higher return on investment vs. “bolting on” application security fixes post production).&lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Application Security Architecture Review==&lt;br /&gt;
&lt;br /&gt;
Typically a table-top design level review and analysis of the application to identify critical assets, sensitive data stores and business critical interconnections.  The purpose of architecture reviews is to also aid in determining potential attack vectors, which could be used in testing.  Thus many organizations will blend this activity with Threat Assessment.  The review of the application and its interconnections should include both a network- and application-level evaluation.  Evaluation should identify areas of potential and actual vulnerability from these levels. This includes areas of vulnerability in the network and application architecture, in addition to a high-level measure of risk of each of those areas.&lt;br /&gt;
 &lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* Provides more depth to the development rationale of various functionality in the application life cycle. &lt;br /&gt;
* By using results from Architecture Review, the assessment (testing) team is able to follow development logic in the “how” and “why” business and security requirements were integrated into application behavior and security controls/constraints. &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee identification of all possible security threats. &lt;br /&gt;
* Because the scope of an architectural assessment is far more complex than the limited perspective of an application layer assessment, recommendations are similarly complex, sometimes involving “political” changes (i.e., security department’s level of involvement in the SDLC). &lt;br /&gt;
* Requires on-site discussions with application principals.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security dollars (i.e.,  incorporate security in beginning begets higher return on investment vs. fixing applications post production). &lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Manual Security-Focused Code Review==&lt;br /&gt;
&lt;br /&gt;
Review of the software source code to identify source code-level issues, which may enable an attacker to compromise an application, system, or business functionality. Web applications in particular are likely to have these vulnerabilities, as they are frequently developed quickly in an environment that does not allow for much security planning and testing. This should not be viewed as simply a generic software audit.  Security-focused code reviews should be specifically tailored to find common vulnerabilities in applications. &lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* If integrated into the [http://en.wikipedia.org/wiki/Software_development_life_cycle Software Development Life Cycle (SDLC)], coding issues can be resolved earlier in the development process. (which is much less expensive to fix than a post-production revision of the code).&lt;br /&gt;
* Provides the ability to identify and address serious coding issues (e.g., input validation, hard-coded credentials, debugging features, etc.) prior to production.&lt;br /&gt;
* Enables development teams to identify and correct insecure coding techniques that could lead to security vulnerabilities or possible incidents.&lt;br /&gt;
* Helps developers learn from each other and share knowledge on secure coding techniques, best practices and common solutions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* can be very time consuming and costly if automated tools are not available to help augment the review process&lt;br /&gt;
* If conducted solely by tools, results will be mostly static signature matching though some tools claim to walk codepath (follow nested loops and other regression through objects).&lt;br /&gt;
* Even applications that exhibit strong and thorough software development practices (e.g., documentation, seamless modularity, string checking to prevent buffer overflows, etc.) can fall victim to attack if the underlying business logic doesn’t follow security requirements.&lt;br /&gt;
* Requires specific programming expertise (e.g., Java, .NET, PHP, etc.) that many application testers do not have.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Security-focused code reviews should be conducted as part of the normal SDLC. Reviews may also be needed during or after security testing, prior to implementing system upgrades, prior to making system configuration changes, when new security bulletins are released, or immediately following any reported security incidents.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Automated Source Code Analysis==&lt;br /&gt;
&lt;br /&gt;
Automated source code analysis involves the use of special software &amp;quot;tools&amp;quot; to conduct [http://en.wikipedia.org/wiki/Static_code_analysis Static Code Analysis] on software source code to identify potential vulnerabilities within the code. &lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* can be very effective method for identifying defects in code functionality and syntax errors&lt;br /&gt;
* most automated source code analysis tools are highly scalable&lt;br /&gt;
* expedites code review process (can review 400-500 LOC/hr via manual review vs. up to 10,000 LOC/hr using automated source code scanning tools)&lt;br /&gt;
* helps teams focus their manual code review activities on flagged, high-risk areas &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* most automated source code analysis tools generate false positives &lt;br /&gt;
* some automated source code analysis tools have a significant learning curve&lt;br /&gt;
* some coding languages (such as ASP) are not supported by the tools&lt;br /&gt;
* results of automated scans are basically &amp;quot;blueprints&amp;quot; of source code vulnerabilities, so they must be properly protected&lt;br /&gt;
* Most of the automated source code analysis tools available on the market today can not identify logic errors, timing errors, resource conflicts, data errors and configuration errors.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Automated source code analysis tools can be used to enhance and improve an organization’s overall efforts to find and eliminate security vulnerabilities within software applications. However, they should not be viewed as a &amp;quot;silver bullet&amp;quot;. Manual code reviews must still be conducted to identify false positives and security-related defects that tools can not identify.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Automated External Application Scanning==&lt;br /&gt;
&lt;br /&gt;
Utilizing automated open source or commercial software to discover known application layer vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Able to quickly identify default content, misconfigurations and error conditions resulting from improper input.&lt;br /&gt;
* Ability to be run on automated, regular basis to provide baseline and ongoing vulnerability management metrics.&lt;br /&gt;
* Can reduce the time required to assess large applications.&lt;br /&gt;
* Lower cost to operate/execute (excluding initial capital cost if using commercial testing software).&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Not designed to determine the extent to which the vulnerabilities can be exploited to compromise the data the application handles.&lt;br /&gt;
* Requires appropriate skills/knowledge to use, configure, and interpret results (despite “point and click” vendor marketing claims).  &lt;br /&gt;
* Requires extensive configuration and customization to emulate a user session.&lt;br /&gt;
* Limited ability to correlate events and correlate minor issues that may lead to larger exposure.  &lt;br /&gt;
* Inability to adapt to dynamic responses in business logic flows.&lt;br /&gt;
* Unable to find vulnerabilities that only become apparent after performing a sequence of steps (e.g., business logic flow bypass, session state compromise, etc.).&lt;br /&gt;
* Unable to figure out “how deep the rabbit hole goes” – No means to interpret security implications, express extent of potential compromise, or identify seriousness of business and information exposure.  &lt;br /&gt;
* Tools will often be confused by some aspect of an application's behavior, causing a particular class of test to generate a false positive.  Because most tools lack intelligence and cannot adapt to such conditions, test results include a large number of identical false positives.   &lt;br /&gt;
** For valid findings, the tools will often find dozens or hundreds of nearly identical findings, each with the same root cause.  &lt;br /&gt;
* Tool based findings are only indications of problems. Manual review (by someone well versed in web application testing) is usually necessary to draw the necessary parallels between different findings, and determine which findings identify unique problems, and which represent repetition.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Handling routine, manually intensive steps (e.g., input validation, field “fuzzing”, etc.) in an assessment is useful, particularly in large applications. However, scanner-based results can be used as the starting point from which expert testing can take over.&lt;br /&gt;
* Testing less critical applications (i.e., applications that do not contain/handle business sensitive data and/or are not critical to business operation) where the perceived lower risk does not warrant performing hands-on testing.&lt;br /&gt;
* Testing critical applications as a prelude to expert testing or code reviews.&lt;br /&gt;
&lt;br /&gt;
If a tool is used, it is important to define the technical limitations of the tool when the findings are presented.  An example of this may involve noting the potential for SQL injection attacks based upon verbose SQL error messages, but also the tool’s inability to produce the correct syntax needed to extract specific information from the vulnerable database.  A failure to convey the differences between automated and expert testing increases the risk that the application assessment results will be interpreted (particularly by management) as being more “secure” than they actually are. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Manual Penetration Testing==&lt;br /&gt;
&lt;br /&gt;
Manual Penetration Testing involves application analysis performed by an experienced analyst, usually using a combination of open source automated utilities (either self created or through security community) for performing task-specific functions and hands-on analysis to attempt to further ‘hack’ the application as an attacker.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Open source tools utilized by the expert tester are developed usually for specific purposes rather than wrapping multiple functionality into a GUI. Typically are one of many components in the testers toolkit.&lt;br /&gt;
* “Expert testing” is an intuitive approach (Business logic analysis), with the ability to identify flaws in business logic that automated scanners are usually incapable of finding.&lt;br /&gt;
* Addresses many of the disadvantages noted in Automated Testing.&lt;br /&gt;
* Ability to correlate events and minor issues that may lead to larger exposure.  This is a critical advantage of hands-on testing and simulates how a real attacker would operate. &lt;br /&gt;
* Ability to communicate complex technical findings in a manner that all can understand.  The job is not done until the assessment end-client understands the nature of the vulnerability discovered and its security implications.  &lt;br /&gt;
** The analysis phase of expert testing provides “root cause” identification and recommendations based upon the unique, developmental characteristics of an application. Results from an automated tool cannot provide customized, specific recommendations tailored for each application and the end-client’s requirements.  &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Often confused with Automated Testing – Marketing of commercial tools uses terms such as “expert” and “intuitive”, normally associated with an assessment performed by an experienced analyst.&lt;br /&gt;
* Inability of most end-client organizations to determine if tester has appropriate application security skills required.  There are no community accepted credentials/certifications established for this area of security.&lt;br /&gt;
* Cost to conduct will be higher though there is no upfront capital cost.&lt;br /&gt;
* Without establishing clear metrics up front, ongoing testing to determine trends within business environment or iterations of application is difficult.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Testing critical applications (i.e., applications that do contain/handle business sensitive data and/or are critical to business operation) where the perceived higher risk does not warrant performing automated testing.&lt;br /&gt;
* Best suited for B2B, B2C and/or any transactional based and/or multi-level access application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References/Sources==&lt;br /&gt;
&lt;br /&gt;
* Testing Taxonomy &amp;amp; Testing Tools Classification : http://www.owasp.org/index.php/Image:AppSec2005DC-Arian_Evans_Tools-Taxonomy.ppt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Application Security Assessment Standards Project]]&lt;br /&gt;
{{Template:Stub}}&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10196</id>
		<title>Definition for Security Assessment Techniques</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10196"/>
				<updated>2006-10-05T21:21:10Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This article’s focus is to define, where practical, nomenclature and definitions of the differing security '''Assessment Techniques'''.  Agreement and establishment of these definitions are foundational to establishing the '''Assessment Levels''' later within this project.&lt;br /&gt;
&lt;br /&gt;
==Techniques==&lt;br /&gt;
&lt;br /&gt;
The following assessment techniques are proposed:&lt;br /&gt;
&lt;br /&gt;
* Application Security Threat Assessment&lt;br /&gt;
* Application Security Architecture Review&lt;br /&gt;
* Automated Security Code Scanning (Tool Based Static Analysis)&lt;br /&gt;
* Automated External Application Scanning (Tool Based) &lt;br /&gt;
* Manual Penetration Testing (Security Test Specialist)&lt;br /&gt;
* Manual Application Security Code Review (Software Security Specialist)&lt;br /&gt;
&lt;br /&gt;
NOTE: these should probably link to full articles on each subject&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Application Security Threat Assessment==&lt;br /&gt;
&lt;br /&gt;
Analyzes application architectural information to develop a threat profile for the application components.  &lt;br /&gt;
&lt;br /&gt;
* Identify the nature of the threats – the likely vulnerabilities of the given application and business.&lt;br /&gt;
&lt;br /&gt;
* Estimate the probability that those vulnerabilities might lead to a disruption and the type of impact – both expected and worst case – that might arise.&lt;br /&gt;
&lt;br /&gt;
* Analyze the different consequences and their likelihood of occurrence and determine which should be dealt with and what priority should be attached to mitigate.&lt;br /&gt;
&lt;br /&gt;
While the threats to each asset within the Application can be individually developed and mapped, a more efficient approach is to develop a master list of threat types and identify how these can be used to launch an attack on the Application and/or its components and potentially in turn the business itself.  A single threat may exploit a vulnerability to damage different types of assets. Conversely, several threat types may exploit disparate vulnerabilities in order to attack a single critical asset. Given the many-to-many relationships between threats and assets, it is best to use a simple representation of threat to asset mapping by listing threat types by each critical asset identified.&lt;br /&gt;
&lt;br /&gt;
A threat assessment should categorize threat types and threat agents but should focus on malicious threats and will not cover accidental and natural threats. The source of Malicious Threats (the attacker or perpetrator, in this context) can be classified as unauthorized and authorized. Threat vectors and operating environment more fully define how and why a particular “user” falls into one of these categories:&lt;br /&gt;
&lt;br /&gt;
Unauthorized: &lt;br /&gt;
* An attacker who does not have credentials to legitimately access the application&lt;br /&gt;
&lt;br /&gt;
Authorized:&lt;br /&gt;
* A legitimate user of the application&lt;br /&gt;
* A malicious insider&lt;br /&gt;
* A previously unauthorized user who has gained authorized access through compromise of a valid account or user session&lt;br /&gt;
&lt;br /&gt;
While the threat agents may have similar intent, varying reasons for engaging in illegal activities motivates them. Some authorized employees may willfully commit fraud for financial gain or engage in sabotage in order to disrupt routine operations. Theft, vandalism, intentional corruptions and alteration of information are also categorized as malicious threats.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* By using results from a threat assessment, the end-client is able to focus assessment (testing) activities based on business requirements and operational reality. &lt;br /&gt;
* Allows vulnerabilities discovered in other assessment types to be weighted and prioritized based on threat probability vs. raw vulnerability finding.&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee that all possible security threats will be uncovered. &lt;br /&gt;
* End-client must evaluate analysis and determine responses(s).&lt;br /&gt;
* Requires existence of application architecture documentation.&lt;br /&gt;
* Often confused with Risk Assessments, which weigh asset value, threat, and vulnerability in order to determine business risk.  Threat assessments focus on identifying only the threat component (vector(s) and probability).&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security resources (i.e.,  “bake in” security during application development begets higher return on investment vs. “bolting on” application security fixes post production).&lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Application Security Architecture Review==&lt;br /&gt;
&lt;br /&gt;
Typically a table-top design level review and analysis of the application to identify critical assets, sensitive data stores and business critical interconnections.  The purpose of architecture reviews is to also aid in determining potential attack vectors, which could be used in testing.  Thus many organizations will blend this activity with Threat Assessment.  The review of the application and its interconnections should include both a network- and application-level evaluation.  Evaluation should identify areas of potential and actual vulnerability from these levels. This includes areas of vulnerability in the network and application architecture, in addition to a high-level measure of risk of each of those areas.&lt;br /&gt;
 &lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* Provides more depth to the development rationale of various functionality in the application life cycle. &lt;br /&gt;
* By using results from Architecture Review, the assessment (testing) team is able to follow development logic in the “how” and “why” business and security requirements were integrated into application behavior and security controls/constraints. &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee identification of all possible security threats. &lt;br /&gt;
* Because the scope of an architectural assessment is far more complex than the limited perspective of an application layer assessment, recommendations are similarly complex, sometimes involving “political” changes (i.e., security department’s level of involvement in the SDLC). &lt;br /&gt;
* Requires on-site discussions with application principals.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security dollars (i.e.,  incorporate security in beginning begets higher return on investment vs. fixing applications post production). &lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Manual Security-Focused Code Review==&lt;br /&gt;
&lt;br /&gt;
Review of the software source code to identify source code-level issues, which may enable an attacker to compromise an application, system, or business functionality. Web applications in particular are likely to have these vulnerabilities, as they are frequently developed quickly in an environment that does not allow for much security planning and testing. This should not be viewed as simply a generic software audit.  Security-focused code reviews should be specifically tailored to find common vulnerabilities in applications. &lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* If integrated into the [http://en.wikipedia.org/wiki/Software_development_life_cycle Software Development Life Cycle (SDLC)], coding issues can be resolved earlier in the development process. (which is much less expensive to fix than a post-production revision of the code).&lt;br /&gt;
* Provides the ability to identify and address serious coding issues (e.g., input validation, hard-coded credentials, debugging features, etc.) prior to production.&lt;br /&gt;
* Enables development teams to identify and correct insecure coding techniques that could lead to security vulnerabilities or possible incidents.&lt;br /&gt;
* Helps developers learn from each other and share knowledge on secure coding techniques, best practices and common solutions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* can be very time consuming and costly if automated tools are not available to help augment the review process&lt;br /&gt;
* If conducted solely by tools, results will be mostly static signature matching though some tools claim to walk codepath (follow nested loops and other regression through objects).&lt;br /&gt;
* Even applications that exhibit strong and thorough software development practices (e.g., documentation, seamless modularity, string checking to prevent buffer overflows, etc.) can fall victim to attack if the underlying business logic doesn’t follow security requirements.&lt;br /&gt;
* Requires specific programming expertise (e.g., Java, .NET, PHP, etc.) that many application testers do not have.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Security-focused code reviews should be conducted as part of the normal SDLC. Reviews may also be needed during or after security testing, prior to implementing system upgrades, prior to making system configuration changes, when new security bulletins are released, or immediately following any reported security incidents.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Automated Source Code Analysis==&lt;br /&gt;
&lt;br /&gt;
Automated source code analysis involves the use of special software &amp;quot;tools&amp;quot; to conduct [http://en.wikipedia.org/wiki/Static_code_analysis Static Code Analysis] on software source code to identify potential vulnerabilities within the code. &lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* can be very effective method for identifying defects in code functionality and syntax errors&lt;br /&gt;
* most automated source code analysis tools are highly scalable&lt;br /&gt;
* expedites code review process (can review 400-500 LOC/hr via manual review vs. up to 10,000 LOC/hr using automated source code scanning tools)&lt;br /&gt;
* helps teams focus their manual code review activities on flagged, high-risk areas &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* most automated source code analysis tools generate false positives &lt;br /&gt;
* some automated source code analysis tools have a significant learning curve&lt;br /&gt;
* some coding languages (such as ASP) are not supported by the tools&lt;br /&gt;
* results of automated scans are basically &amp;quot;blueprints&amp;quot; of source code vulnerabilities, so they must be properly protected&lt;br /&gt;
* Most of the automated source code analysis tools available on the market today can not identify logic errors, timing errors, resource conflicts, data errors and configuration errors.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Automated source code analysis tools can be used to enhance and improve an organization’s overall efforts to find and eliminate security vulnerabilities within software applications. However, they should not be viewed as a &amp;quot;silver bullet&amp;quot;. Manual code reviews must still be conducted to identify false positives and security-related defects that tools can not identify.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Automated External Application Scanning==&lt;br /&gt;
&lt;br /&gt;
Utilizing automated open source or commercial software to discover known application layer vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Able to quickly identify default content, misconfigurations and error conditions resulting from improper input.&lt;br /&gt;
* Ability to be run on automated, regular basis to provide baseline and ongoing vulnerability management metrics.&lt;br /&gt;
* Can reduce the time required to assess large applications.&lt;br /&gt;
* Lower cost to operate/execute (excluding initial capital cost if using commercial testing software).&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Not designed to determine the extent to which the vulnerabilities can be exploited to compromise the data the application handles.&lt;br /&gt;
* Requires appropriate skills/knowledge to use, configure, and interpret results (despite “point and click” vendor marketing claims).  &lt;br /&gt;
* Requires extensive configuration and customization to emulate a user session.&lt;br /&gt;
* Limited ability to correlate events and correlate minor issues that may lead to larger exposure.  &lt;br /&gt;
* Inability to adapt to dynamic responses in business logic flows.&lt;br /&gt;
* Unable to find vulnerabilities that only become apparent after performing a sequence of steps (e.g., business logic flow bypass, session state compromise, etc.).&lt;br /&gt;
* Unable to figure out “how deep the rabbit hole goes” – No means to interpret security implications, express extent of potential compromise, or identify seriousness of business and information exposure.  &lt;br /&gt;
* Tools will often be confused by some aspect of an application's behavior, causing a particular class of test to generate a false positive.  Because most tools lack intelligence and cannot adapt to such conditions, test results include a large number of identical false positives.   &lt;br /&gt;
** For valid findings, the tools will often find dozens or hundreds of nearly identical findings, each with the same root cause.  &lt;br /&gt;
* Tool based findings are only indications of problems. Manual review (by someone well versed in web application testing) is usually necessary to draw the necessary parallels between different findings, and determine which findings identify unique problems, and which represent repetition.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Handling routine, manually intensive steps (e.g., input validation, field “fuzzing”, etc.) in an assessment is useful, particularly in large applications. However, scanner-based results can be used as the starting point from which expert testing can take over.&lt;br /&gt;
* Testing less critical applications (i.e., applications that do not contain/handle business sensitive data and/or are not critical to business operation) where the perceived lower risk does not warrant performing hands-on testing.&lt;br /&gt;
* Testing critical applications as a prelude to expert testing or code reviews.&lt;br /&gt;
&lt;br /&gt;
If a tool is used, it is important to define the technical limitations of the tool when the findings are presented.  An example of this may involve noting the potential for SQL injection attacks based upon verbose SQL error messages, but also the tool’s inability to produce the correct syntax needed to extract specific information from the vulnerable database.  A failure to convey the differences between automated and expert testing increases the risk that the application assessment results will be interpreted (particularly by management) as being more “secure” than they actually are. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Manual Penetration Testing==&lt;br /&gt;
&lt;br /&gt;
Manual Penetration Testing involves application analysis performed by an experienced analyst, usually using a combination of open source automated utilities (either self created or through security community) for performing task-specific functions and hands-on analysis to attempt to further ‘hack’ the application as an attacker.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Open source tools utilized by the expert tester are developed usually for specific purposes rather than wrapping multiple functionality into a GUI. Typically are one of many components in the testers toolkit.&lt;br /&gt;
* “Expert testing” is an intuitive approach (Business logic analysis), with the ability to identify flaws in business logic that automated scanners are usually incapable of finding.&lt;br /&gt;
* Addresses many of the disadvantages noted in Automated Testing.&lt;br /&gt;
* Ability to correlate events and minor issues that may lead to larger exposure.  This is a critical advantage of hands-on testing and simulates how a real attacker would operate. &lt;br /&gt;
* Ability to communicate complex technical findings in a manner that all can understand.  The job is not done until the assessment end-client understands the nature of the vulnerability discovered and its security implications.  &lt;br /&gt;
** The analysis phase of expert testing provides “root cause” identification and recommendations based upon the unique, developmental characteristics of an application. Results from an automated tool cannot provide customized, specific recommendations tailored for each application and the end-client’s requirements.  &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Often confused with Automated Testing – Marketing of commercial tools uses terms such as “expert” and “intuitive”, normally associated with an assessment performed by an experienced analyst.&lt;br /&gt;
* Inability of most end-client organizations to determine if tester has appropriate application security skills required.  There are no community accepted credentials/certifications established for this area of security.&lt;br /&gt;
* Cost to conduct will be higher though there is no upfront capital cost.&lt;br /&gt;
* Without establishing clear metrics up front, ongoing testing to determine trends within business environment or iterations of application is difficult.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Testing critical applications (i.e., applications that do contain/handle business sensitive data and/or are critical to business operation) where the perceived higher risk does not warrant performing automated testing.&lt;br /&gt;
* Best suited for B2B, B2C and/or any transactional based and/or multi-level access application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References/Sources==&lt;br /&gt;
&lt;br /&gt;
* Testing Taxonomy &amp;amp; Testing Tools Classification : http://www.owasp.org/index.php/Image:AppSec2005DC-Arian_Evans_Tools-Taxonomy.ppt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Application Security Assessment Standards Project]]&lt;br /&gt;
{{Template:Stub}}&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10195</id>
		<title>Definition for Security Assessment Techniques</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10195"/>
				<updated>2006-10-05T21:20:18Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* Manual Security-Focused Code Review */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This article’s focus is to define, where practical, nomenclature and definitions of the differing security '''Assessment Techniques'''.  Agreement and establishment of these definitions are foundational to establishing the '''Assessment Levels''' later within this project.&lt;br /&gt;
&lt;br /&gt;
==Techniques==&lt;br /&gt;
&lt;br /&gt;
The following assessment techniques are proposed:&lt;br /&gt;
&lt;br /&gt;
* Application Security Threat Assessment&lt;br /&gt;
* Application Security Architecture Review&lt;br /&gt;
* Automated Security Code Scanning (Tool Based Static Analysis)&lt;br /&gt;
* Automated External Application Scanning (Tool Based) &lt;br /&gt;
* Manual Penetration Testing (Security Test Specialist)&lt;br /&gt;
* Manual Application Security Code Review (Software Security Specialist)&lt;br /&gt;
&lt;br /&gt;
NOTE: these should probably link to full articles on each subject&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Application Security Threat Assessment==&lt;br /&gt;
&lt;br /&gt;
Analyzes application architectural information to develop a threat profile for the application components.  &lt;br /&gt;
&lt;br /&gt;
* Identify the nature of the threats – the likely vulnerabilities of the given application and business.&lt;br /&gt;
&lt;br /&gt;
* Estimate the probability that those vulnerabilities might lead to a disruption and the type of impact – both expected and worst case – that might arise.&lt;br /&gt;
&lt;br /&gt;
* Analyze the different consequences and their likelihood of occurrence and determine which should be dealt with and what priority should be attached to mitigate.&lt;br /&gt;
&lt;br /&gt;
While the threats to each asset within the Application can be individually developed and mapped, a more efficient approach is to develop a master list of threat types and identify how these can be used to launch an attack on the Application and/or its components and potentially in turn the business itself.  A single threat may exploit a vulnerability to damage different types of assets. Conversely, several threat types may exploit disparate vulnerabilities in order to attack a single critical asset. Given the many-to-many relationships between threats and assets, it is best to use a simple representation of threat to asset mapping by listing threat types by each critical asset identified.&lt;br /&gt;
&lt;br /&gt;
A threat assessment should categorize threat types and threat agents but should focus on malicious threats and will not cover accidental and natural threats. The source of Malicious Threats (the attacker or perpetrator, in this context) can be classified as unauthorized and authorized. Threat vectors and operating environment more fully define how and why a particular “user” falls into one of these categories:&lt;br /&gt;
&lt;br /&gt;
Unauthorized: &lt;br /&gt;
* An attacker who does not have credentials to legitimately access the application&lt;br /&gt;
&lt;br /&gt;
Authorized:&lt;br /&gt;
* A legitimate user of the application&lt;br /&gt;
* A malicious insider&lt;br /&gt;
* A previously unauthorized user who has gained authorized access through compromise of a valid account or user session&lt;br /&gt;
&lt;br /&gt;
While the threat agents may have similar intent, varying reasons for engaging in illegal activities motivates them. Some authorized employees may willfully commit fraud for financial gain or engage in sabotage in order to disrupt routine operations. Theft, vandalism, intentional corruptions and alteration of information are also categorized as malicious threats.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* By using results from a threat assessment, the end-client is able to focus assessment (testing) activities based on business requirements and operational reality. &lt;br /&gt;
* Allows vulnerabilities discovered in other assessment types to be weighted and prioritized based on threat probability vs. raw vulnerability finding.&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee that all possible security threats will be uncovered. &lt;br /&gt;
* End-client must evaluate analysis and determine responses(s).&lt;br /&gt;
* Requires existence of application architecture documentation.&lt;br /&gt;
* Often confused with Risk Assessments, which weigh asset value, threat, and vulnerability in order to determine business risk.  Threat assessments focus on identifying only the threat component (vector(s) and probability).&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security resources (i.e.,  “bake in” security during application development begets higher return on investment vs. “bolting on” application security fixes post production).&lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Application Security Architecture Review==&lt;br /&gt;
&lt;br /&gt;
Typically a table-top design level review and analysis of the application to identify critical assets, sensitive data stores and business critical interconnections.  The purpose of architecture reviews is to also aid in determining potential attack vectors, which could be used in testing.  Thus many organizations will blend this activity with Threat Assessment.  The review of the application and its interconnections should include both a network- and application-level evaluation.  Evaluation should identify areas of potential and actual vulnerability from these levels. This includes areas of vulnerability in the network and application architecture, in addition to a high-level measure of risk of each of those areas.&lt;br /&gt;
 &lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* Provides more depth to the development rationale of various functionality in the application life cycle. &lt;br /&gt;
* By using results from Architecture Review, the assessment (testing) team is able to follow development logic in the “how” and “why” business and security requirements were integrated into application behavior and security controls/constraints. &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee identification of all possible security threats. &lt;br /&gt;
* Because the scope of an architectural assessment is far more complex than the limited perspective of an application layer assessment, recommendations are similarly complex, sometimes involving “political” changes (i.e., security department’s level of involvement in the SDLC). &lt;br /&gt;
* Requires on-site discussions with application principals.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security dollars (i.e.,  incorporate security in beginning begets higher return on investment vs. fixing applications post production). &lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Manual Security-Focused Code Review==&lt;br /&gt;
&lt;br /&gt;
Review of the software source code to identify source code-level issues, which may enable an attacker to compromise an application, system, or business functionality. Web applications in particular are likely to have these vulnerabilities, as they are frequently developed quickly in an environment that does not allow for much security planning and testing. This should not be viewed as simply a generic software audit.  Security-focused code reviews should be specifically tailored to find common vulnerabilities in applications. &lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* If integrated into the [http://en.wikipedia.org/wiki/Software_development_life_cycle Software Development Life Cycle (SDLC)], coding issues can be resolved earlier in the development process. (which is much less expensive to fix than a post-production revision of the code).&lt;br /&gt;
* Provides the ability to identify and address serious coding issues (e.g., input validation, hard-coded credentials, debugging features, etc.) prior to production.&lt;br /&gt;
* Enables development teams to identify and correct insecure coding techniques that could lead to security vulnerabilities or possible incidents.&lt;br /&gt;
* Helps developers learn from each other and share knowledge on secure coding techniques, best practices and common solutions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* can be very time consuming and costly if automated tools are not available to help augment the review process&lt;br /&gt;
* If conducted solely by tools, results will be mostly static signature matching though some tools claim to walk codepath (follow nested loops and other regression through objects).&lt;br /&gt;
* Even applications that exhibit strong and thorough software development practices (e.g., documentation, seamless modularity, string checking to prevent buffer overflows, etc.) can fall victim to attack if the underlying business logic doesn’t follow security requirements.&lt;br /&gt;
* Requires specific programming expertise (e.g., Java, .NET, PHP, etc.) that many application testers do not have.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Security-focused code reviews should be conducted as part of the normal SDLC. Reviews may also be needed during or after security testing, prior to implementing system upgrades, prior to making system configuration changes, when new security bulletins are released, or immediately following any reported security incidents.&lt;br /&gt;
&lt;br /&gt;
==Automated Source Code Analysis==&lt;br /&gt;
&lt;br /&gt;
Automated source code analysis involves the use of special software &amp;quot;tools&amp;quot; to conduct [http://en.wikipedia.org/wiki/Static_code_analysis Static Code Analysis] on software source code to identify potential vulnerabilities within the code. &lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* can be very effective method for identifying defects in code functionality and syntax errors&lt;br /&gt;
* most automated source code analysis tools are highly scalable&lt;br /&gt;
* expedites code review process (can review 400-500 LOC/hr via manual review vs. up to 10,000 LOC/hr using automated source code scanning tools)&lt;br /&gt;
* helps teams focus their manual code review activities on flagged, high-risk areas &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* most automated source code analysis tools generate false positives &lt;br /&gt;
* some automated source code analysis tools have a significant learning curve&lt;br /&gt;
* some coding languages (such as ASP) are not supported by the tools&lt;br /&gt;
* results of automated scans are basically &amp;quot;blueprints&amp;quot; of source code vulnerabilities, so they must be properly protected&lt;br /&gt;
* Most of the automated source code analysis tools available on the market today can not identify logic errors, timing errors, resource conflicts, data errors and configuration errors.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Automated source code analysis tools can be used to enhance and improve an organization’s overall efforts to find and eliminate security vulnerabilities within software applications. However, they should not be viewed as a &amp;quot;silver bullet&amp;quot;. Manual code reviews must still be conducted to identify false positives and security-related defects that tools can not identify.&lt;br /&gt;
&lt;br /&gt;
==Automated External Application Scanning==&lt;br /&gt;
&lt;br /&gt;
Utilizing automated open source or commercial software to discover known application layer vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Able to quickly identify default content, misconfigurations and error conditions resulting from improper input.&lt;br /&gt;
* Ability to be run on automated, regular basis to provide baseline and ongoing vulnerability management metrics.&lt;br /&gt;
* Can reduce the time required to assess large applications.&lt;br /&gt;
* Lower cost to operate/execute (excluding initial capital cost if using commercial testing software).&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Not designed to determine the extent to which the vulnerabilities can be exploited to compromise the data the application handles.&lt;br /&gt;
* Requires appropriate skills/knowledge to use, configure, and interpret results (despite “point and click” vendor marketing claims).  &lt;br /&gt;
* Requires extensive configuration and customization to emulate a user session.&lt;br /&gt;
* Limited ability to correlate events and correlate minor issues that may lead to larger exposure.  &lt;br /&gt;
* Inability to adapt to dynamic responses in business logic flows.&lt;br /&gt;
* Unable to find vulnerabilities that only become apparent after performing a sequence of steps (e.g., business logic flow bypass, session state compromise, etc.).&lt;br /&gt;
* Unable to figure out “how deep the rabbit hole goes” – No means to interpret security implications, express extent of potential compromise, or identify seriousness of business and information exposure.  &lt;br /&gt;
* Tools will often be confused by some aspect of an application's behavior, causing a particular class of test to generate a false positive.  Because most tools lack intelligence and cannot adapt to such conditions, test results include a large number of identical false positives.   &lt;br /&gt;
** For valid findings, the tools will often find dozens or hundreds of nearly identical findings, each with the same root cause.  &lt;br /&gt;
* Tool based findings are only indications of problems. Manual review (by someone well versed in web application testing) is usually necessary to draw the necessary parallels between different findings, and determine which findings identify unique problems, and which represent repetition.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Handling routine, manually intensive steps (e.g., input validation, field “fuzzing”, etc.) in an assessment is useful, particularly in large applications. However, scanner-based results can be used as the starting point from which expert testing can take over.&lt;br /&gt;
* Testing less critical applications (i.e., applications that do not contain/handle business sensitive data and/or are not critical to business operation) where the perceived lower risk does not warrant performing hands-on testing.&lt;br /&gt;
* Testing critical applications as a prelude to expert testing or code reviews.&lt;br /&gt;
&lt;br /&gt;
If a tool is used, it is important to define the technical limitations of the tool when the findings are presented.  An example of this may involve noting the potential for SQL injection attacks based upon verbose SQL error messages, but also the tool’s inability to produce the correct syntax needed to extract specific information from the vulnerable database.  A failure to convey the differences between automated and expert testing increases the risk that the application assessment results will be interpreted (particularly by management) as being more “secure” than they actually are. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Manual Penetration Testing==&lt;br /&gt;
&lt;br /&gt;
Manual Penetration Testing involves application analysis performed by an experienced analyst, usually using a combination of open source automated utilities (either self created or through security community) for performing task-specific functions and hands-on analysis to attempt to further ‘hack’ the application as an attacker.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Open source tools utilized by the expert tester are developed usually for specific purposes rather than wrapping multiple functionality into a GUI. Typically are one of many components in the testers toolkit.&lt;br /&gt;
* “Expert testing” is an intuitive approach (Business logic analysis), with the ability to identify flaws in business logic that automated scanners are usually incapable of finding.&lt;br /&gt;
* Addresses many of the disadvantages noted in Automated Testing.&lt;br /&gt;
* Ability to correlate events and minor issues that may lead to larger exposure.  This is a critical advantage of hands-on testing and simulates how a real attacker would operate. &lt;br /&gt;
* Ability to communicate complex technical findings in a manner that all can understand.  The job is not done until the assessment end-client understands the nature of the vulnerability discovered and its security implications.  &lt;br /&gt;
** The analysis phase of expert testing provides “root cause” identification and recommendations based upon the unique, developmental characteristics of an application. Results from an automated tool cannot provide customized, specific recommendations tailored for each application and the end-client’s requirements.  &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Often confused with Automated Testing – Marketing of commercial tools uses terms such as “expert” and “intuitive”, normally associated with an assessment performed by an experienced analyst.&lt;br /&gt;
* Inability of most end-client organizations to determine if tester has appropriate application security skills required.  There are no community accepted credentials/certifications established for this area of security.&lt;br /&gt;
* Cost to conduct will be higher though there is no upfront capital cost.&lt;br /&gt;
* Without establishing clear metrics up front, ongoing testing to determine trends within business environment or iterations of application is difficult.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Testing critical applications (i.e., applications that do contain/handle business sensitive data and/or are critical to business operation) where the perceived higher risk does not warrant performing automated testing.&lt;br /&gt;
* Best suited for B2B, B2C and/or any transactional based and/or multi-level access application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References/Sources==&lt;br /&gt;
&lt;br /&gt;
* Testing Taxonomy &amp;amp; Testing Tools Classification : http://www.owasp.org/index.php/Image:AppSec2005DC-Arian_Evans_Tools-Taxonomy.ppt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Application Security Assessment Standards Project]]&lt;br /&gt;
{{Template:Stub}}&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10194</id>
		<title>Definition for Security Assessment Techniques</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10194"/>
				<updated>2006-10-05T21:20:01Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* Application Security Architecture Review */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This article’s focus is to define, where practical, nomenclature and definitions of the differing security '''Assessment Techniques'''.  Agreement and establishment of these definitions are foundational to establishing the '''Assessment Levels''' later within this project.&lt;br /&gt;
&lt;br /&gt;
==Techniques==&lt;br /&gt;
&lt;br /&gt;
The following assessment techniques are proposed:&lt;br /&gt;
&lt;br /&gt;
* Application Security Threat Assessment&lt;br /&gt;
* Application Security Architecture Review&lt;br /&gt;
* Automated Security Code Scanning (Tool Based Static Analysis)&lt;br /&gt;
* Automated External Application Scanning (Tool Based) &lt;br /&gt;
* Manual Penetration Testing (Security Test Specialist)&lt;br /&gt;
* Manual Application Security Code Review (Software Security Specialist)&lt;br /&gt;
&lt;br /&gt;
NOTE: these should probably link to full articles on each subject&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Application Security Threat Assessment==&lt;br /&gt;
&lt;br /&gt;
Analyzes application architectural information to develop a threat profile for the application components.  &lt;br /&gt;
&lt;br /&gt;
* Identify the nature of the threats – the likely vulnerabilities of the given application and business.&lt;br /&gt;
&lt;br /&gt;
* Estimate the probability that those vulnerabilities might lead to a disruption and the type of impact – both expected and worst case – that might arise.&lt;br /&gt;
&lt;br /&gt;
* Analyze the different consequences and their likelihood of occurrence and determine which should be dealt with and what priority should be attached to mitigate.&lt;br /&gt;
&lt;br /&gt;
While the threats to each asset within the Application can be individually developed and mapped, a more efficient approach is to develop a master list of threat types and identify how these can be used to launch an attack on the Application and/or its components and potentially in turn the business itself.  A single threat may exploit a vulnerability to damage different types of assets. Conversely, several threat types may exploit disparate vulnerabilities in order to attack a single critical asset. Given the many-to-many relationships between threats and assets, it is best to use a simple representation of threat to asset mapping by listing threat types by each critical asset identified.&lt;br /&gt;
&lt;br /&gt;
A threat assessment should categorize threat types and threat agents but should focus on malicious threats and will not cover accidental and natural threats. The source of Malicious Threats (the attacker or perpetrator, in this context) can be classified as unauthorized and authorized. Threat vectors and operating environment more fully define how and why a particular “user” falls into one of these categories:&lt;br /&gt;
&lt;br /&gt;
Unauthorized: &lt;br /&gt;
* An attacker who does not have credentials to legitimately access the application&lt;br /&gt;
&lt;br /&gt;
Authorized:&lt;br /&gt;
* A legitimate user of the application&lt;br /&gt;
* A malicious insider&lt;br /&gt;
* A previously unauthorized user who has gained authorized access through compromise of a valid account or user session&lt;br /&gt;
&lt;br /&gt;
While the threat agents may have similar intent, varying reasons for engaging in illegal activities motivates them. Some authorized employees may willfully commit fraud for financial gain or engage in sabotage in order to disrupt routine operations. Theft, vandalism, intentional corruptions and alteration of information are also categorized as malicious threats.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* By using results from a threat assessment, the end-client is able to focus assessment (testing) activities based on business requirements and operational reality. &lt;br /&gt;
* Allows vulnerabilities discovered in other assessment types to be weighted and prioritized based on threat probability vs. raw vulnerability finding.&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee that all possible security threats will be uncovered. &lt;br /&gt;
* End-client must evaluate analysis and determine responses(s).&lt;br /&gt;
* Requires existence of application architecture documentation.&lt;br /&gt;
* Often confused with Risk Assessments, which weigh asset value, threat, and vulnerability in order to determine business risk.  Threat assessments focus on identifying only the threat component (vector(s) and probability).&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security resources (i.e.,  “bake in” security during application development begets higher return on investment vs. “bolting on” application security fixes post production).&lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Application Security Architecture Review==&lt;br /&gt;
&lt;br /&gt;
Typically a table-top design level review and analysis of the application to identify critical assets, sensitive data stores and business critical interconnections.  The purpose of architecture reviews is to also aid in determining potential attack vectors, which could be used in testing.  Thus many organizations will blend this activity with Threat Assessment.  The review of the application and its interconnections should include both a network- and application-level evaluation.  Evaluation should identify areas of potential and actual vulnerability from these levels. This includes areas of vulnerability in the network and application architecture, in addition to a high-level measure of risk of each of those areas.&lt;br /&gt;
 &lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* Provides more depth to the development rationale of various functionality in the application life cycle. &lt;br /&gt;
* By using results from Architecture Review, the assessment (testing) team is able to follow development logic in the “how” and “why” business and security requirements were integrated into application behavior and security controls/constraints. &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee identification of all possible security threats. &lt;br /&gt;
* Because the scope of an architectural assessment is far more complex than the limited perspective of an application layer assessment, recommendations are similarly complex, sometimes involving “political” changes (i.e., security department’s level of involvement in the SDLC). &lt;br /&gt;
* Requires on-site discussions with application principals.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security dollars (i.e.,  incorporate security in beginning begets higher return on investment vs. fixing applications post production). &lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
==Manual Security-Focused Code Review==&lt;br /&gt;
&lt;br /&gt;
Review of the software source code to identify source code-level issues, which may enable an attacker to compromise an application, system, or business functionality. Web applications in particular are likely to have these vulnerabilities, as they are frequently developed quickly in an environment that does not allow for much security planning and testing. This should not be viewed as simply a generic software audit.  Security-focused code reviews should be specifically tailored to find common vulnerabilities in applications. &lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* If integrated into the [http://en.wikipedia.org/wiki/Software_development_life_cycle Software Development Life Cycle (SDLC)], coding issues can be resolved earlier in the development process. (which is much less expensive to fix than a post-production revision of the code).&lt;br /&gt;
* Provides the ability to identify and address serious coding issues (e.g., input validation, hard-coded credentials, debugging features, etc.) prior to production.&lt;br /&gt;
* Enables development teams to identify and correct insecure coding techniques that could lead to security vulnerabilities or possible incidents.&lt;br /&gt;
* Helps developers learn from each other and share knowledge on secure coding techniques, best practices and common solutions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* can be very time consuming and costly if automated tools are not available to help augment the review process&lt;br /&gt;
* If conducted solely by tools, results will be mostly static signature matching though some tools claim to walk codepath (follow nested loops and other regression through objects).&lt;br /&gt;
* Even applications that exhibit strong and thorough software development practices (e.g., documentation, seamless modularity, string checking to prevent buffer overflows, etc.) can fall victim to attack if the underlying business logic doesn’t follow security requirements.&lt;br /&gt;
* Requires specific programming expertise (e.g., Java, .NET, PHP, etc.) that many application testers do not have.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Security-focused code reviews should be conducted as part of the normal SDLC. Reviews may also be needed during or after security testing, prior to implementing system upgrades, prior to making system configuration changes, when new security bulletins are released, or immediately following any reported security incidents.&lt;br /&gt;
&lt;br /&gt;
==Automated Source Code Analysis==&lt;br /&gt;
&lt;br /&gt;
Automated source code analysis involves the use of special software &amp;quot;tools&amp;quot; to conduct [http://en.wikipedia.org/wiki/Static_code_analysis Static Code Analysis] on software source code to identify potential vulnerabilities within the code. &lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* can be very effective method for identifying defects in code functionality and syntax errors&lt;br /&gt;
* most automated source code analysis tools are highly scalable&lt;br /&gt;
* expedites code review process (can review 400-500 LOC/hr via manual review vs. up to 10,000 LOC/hr using automated source code scanning tools)&lt;br /&gt;
* helps teams focus their manual code review activities on flagged, high-risk areas &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* most automated source code analysis tools generate false positives &lt;br /&gt;
* some automated source code analysis tools have a significant learning curve&lt;br /&gt;
* some coding languages (such as ASP) are not supported by the tools&lt;br /&gt;
* results of automated scans are basically &amp;quot;blueprints&amp;quot; of source code vulnerabilities, so they must be properly protected&lt;br /&gt;
* Most of the automated source code analysis tools available on the market today can not identify logic errors, timing errors, resource conflicts, data errors and configuration errors.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Automated source code analysis tools can be used to enhance and improve an organization’s overall efforts to find and eliminate security vulnerabilities within software applications. However, they should not be viewed as a &amp;quot;silver bullet&amp;quot;. Manual code reviews must still be conducted to identify false positives and security-related defects that tools can not identify.&lt;br /&gt;
&lt;br /&gt;
==Automated External Application Scanning==&lt;br /&gt;
&lt;br /&gt;
Utilizing automated open source or commercial software to discover known application layer vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Able to quickly identify default content, misconfigurations and error conditions resulting from improper input.&lt;br /&gt;
* Ability to be run on automated, regular basis to provide baseline and ongoing vulnerability management metrics.&lt;br /&gt;
* Can reduce the time required to assess large applications.&lt;br /&gt;
* Lower cost to operate/execute (excluding initial capital cost if using commercial testing software).&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Not designed to determine the extent to which the vulnerabilities can be exploited to compromise the data the application handles.&lt;br /&gt;
* Requires appropriate skills/knowledge to use, configure, and interpret results (despite “point and click” vendor marketing claims).  &lt;br /&gt;
* Requires extensive configuration and customization to emulate a user session.&lt;br /&gt;
* Limited ability to correlate events and correlate minor issues that may lead to larger exposure.  &lt;br /&gt;
* Inability to adapt to dynamic responses in business logic flows.&lt;br /&gt;
* Unable to find vulnerabilities that only become apparent after performing a sequence of steps (e.g., business logic flow bypass, session state compromise, etc.).&lt;br /&gt;
* Unable to figure out “how deep the rabbit hole goes” – No means to interpret security implications, express extent of potential compromise, or identify seriousness of business and information exposure.  &lt;br /&gt;
* Tools will often be confused by some aspect of an application's behavior, causing a particular class of test to generate a false positive.  Because most tools lack intelligence and cannot adapt to such conditions, test results include a large number of identical false positives.   &lt;br /&gt;
** For valid findings, the tools will often find dozens or hundreds of nearly identical findings, each with the same root cause.  &lt;br /&gt;
* Tool based findings are only indications of problems. Manual review (by someone well versed in web application testing) is usually necessary to draw the necessary parallels between different findings, and determine which findings identify unique problems, and which represent repetition.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Handling routine, manually intensive steps (e.g., input validation, field “fuzzing”, etc.) in an assessment is useful, particularly in large applications. However, scanner-based results can be used as the starting point from which expert testing can take over.&lt;br /&gt;
* Testing less critical applications (i.e., applications that do not contain/handle business sensitive data and/or are not critical to business operation) where the perceived lower risk does not warrant performing hands-on testing.&lt;br /&gt;
* Testing critical applications as a prelude to expert testing or code reviews.&lt;br /&gt;
&lt;br /&gt;
If a tool is used, it is important to define the technical limitations of the tool when the findings are presented.  An example of this may involve noting the potential for SQL injection attacks based upon verbose SQL error messages, but also the tool’s inability to produce the correct syntax needed to extract specific information from the vulnerable database.  A failure to convey the differences between automated and expert testing increases the risk that the application assessment results will be interpreted (particularly by management) as being more “secure” than they actually are. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Manual Penetration Testing==&lt;br /&gt;
&lt;br /&gt;
Manual Penetration Testing involves application analysis performed by an experienced analyst, usually using a combination of open source automated utilities (either self created or through security community) for performing task-specific functions and hands-on analysis to attempt to further ‘hack’ the application as an attacker.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Open source tools utilized by the expert tester are developed usually for specific purposes rather than wrapping multiple functionality into a GUI. Typically are one of many components in the testers toolkit.&lt;br /&gt;
* “Expert testing” is an intuitive approach (Business logic analysis), with the ability to identify flaws in business logic that automated scanners are usually incapable of finding.&lt;br /&gt;
* Addresses many of the disadvantages noted in Automated Testing.&lt;br /&gt;
* Ability to correlate events and minor issues that may lead to larger exposure.  This is a critical advantage of hands-on testing and simulates how a real attacker would operate. &lt;br /&gt;
* Ability to communicate complex technical findings in a manner that all can understand.  The job is not done until the assessment end-client understands the nature of the vulnerability discovered and its security implications.  &lt;br /&gt;
** The analysis phase of expert testing provides “root cause” identification and recommendations based upon the unique, developmental characteristics of an application. Results from an automated tool cannot provide customized, specific recommendations tailored for each application and the end-client’s requirements.  &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Often confused with Automated Testing – Marketing of commercial tools uses terms such as “expert” and “intuitive”, normally associated with an assessment performed by an experienced analyst.&lt;br /&gt;
* Inability of most end-client organizations to determine if tester has appropriate application security skills required.  There are no community accepted credentials/certifications established for this area of security.&lt;br /&gt;
* Cost to conduct will be higher though there is no upfront capital cost.&lt;br /&gt;
* Without establishing clear metrics up front, ongoing testing to determine trends within business environment or iterations of application is difficult.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Testing critical applications (i.e., applications that do contain/handle business sensitive data and/or are critical to business operation) where the perceived higher risk does not warrant performing automated testing.&lt;br /&gt;
* Best suited for B2B, B2C and/or any transactional based and/or multi-level access application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References/Sources==&lt;br /&gt;
&lt;br /&gt;
* Testing Taxonomy &amp;amp; Testing Tools Classification : http://www.owasp.org/index.php/Image:AppSec2005DC-Arian_Evans_Tools-Taxonomy.ppt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Application Security Assessment Standards Project]]&lt;br /&gt;
{{Template:Stub}}&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10193</id>
		<title>Definition for Security Assessment Techniques</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10193"/>
				<updated>2006-10-05T21:19:36Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* Manual Security-Focused Code Review */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This article’s focus is to define, where practical, nomenclature and definitions of the differing security '''Assessment Techniques'''.  Agreement and establishment of these definitions are foundational to establishing the '''Assessment Levels''' later within this project.&lt;br /&gt;
&lt;br /&gt;
==Techniques==&lt;br /&gt;
&lt;br /&gt;
The following assessment techniques are proposed:&lt;br /&gt;
&lt;br /&gt;
* Application Security Threat Assessment&lt;br /&gt;
* Application Security Architecture Review&lt;br /&gt;
* Automated Security Code Scanning (Tool Based Static Analysis)&lt;br /&gt;
* Automated External Application Scanning (Tool Based) &lt;br /&gt;
* Manual Penetration Testing (Security Test Specialist)&lt;br /&gt;
* Manual Application Security Code Review (Software Security Specialist)&lt;br /&gt;
&lt;br /&gt;
NOTE: these should probably link to full articles on each subject&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Application Security Threat Assessment==&lt;br /&gt;
&lt;br /&gt;
Analyzes application architectural information to develop a threat profile for the application components.  &lt;br /&gt;
&lt;br /&gt;
* Identify the nature of the threats – the likely vulnerabilities of the given application and business.&lt;br /&gt;
&lt;br /&gt;
* Estimate the probability that those vulnerabilities might lead to a disruption and the type of impact – both expected and worst case – that might arise.&lt;br /&gt;
&lt;br /&gt;
* Analyze the different consequences and their likelihood of occurrence and determine which should be dealt with and what priority should be attached to mitigate.&lt;br /&gt;
&lt;br /&gt;
While the threats to each asset within the Application can be individually developed and mapped, a more efficient approach is to develop a master list of threat types and identify how these can be used to launch an attack on the Application and/or its components and potentially in turn the business itself.  A single threat may exploit a vulnerability to damage different types of assets. Conversely, several threat types may exploit disparate vulnerabilities in order to attack a single critical asset. Given the many-to-many relationships between threats and assets, it is best to use a simple representation of threat to asset mapping by listing threat types by each critical asset identified.&lt;br /&gt;
&lt;br /&gt;
A threat assessment should categorize threat types and threat agents but should focus on malicious threats and will not cover accidental and natural threats. The source of Malicious Threats (the attacker or perpetrator, in this context) can be classified as unauthorized and authorized. Threat vectors and operating environment more fully define how and why a particular “user” falls into one of these categories:&lt;br /&gt;
&lt;br /&gt;
Unauthorized: &lt;br /&gt;
* An attacker who does not have credentials to legitimately access the application&lt;br /&gt;
&lt;br /&gt;
Authorized:&lt;br /&gt;
* A legitimate user of the application&lt;br /&gt;
* A malicious insider&lt;br /&gt;
* A previously unauthorized user who has gained authorized access through compromise of a valid account or user session&lt;br /&gt;
&lt;br /&gt;
While the threat agents may have similar intent, varying reasons for engaging in illegal activities motivates them. Some authorized employees may willfully commit fraud for financial gain or engage in sabotage in order to disrupt routine operations. Theft, vandalism, intentional corruptions and alteration of information are also categorized as malicious threats.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* By using results from a threat assessment, the end-client is able to focus assessment (testing) activities based on business requirements and operational reality. &lt;br /&gt;
* Allows vulnerabilities discovered in other assessment types to be weighted and prioritized based on threat probability vs. raw vulnerability finding.&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee that all possible security threats will be uncovered. &lt;br /&gt;
* End-client must evaluate analysis and determine responses(s).&lt;br /&gt;
* Requires existence of application architecture documentation.&lt;br /&gt;
* Often confused with Risk Assessments, which weigh asset value, threat, and vulnerability in order to determine business risk.  Threat assessments focus on identifying only the threat component (vector(s) and probability).&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security resources (i.e.,  “bake in” security during application development begets higher return on investment vs. “bolting on” application security fixes post production).&lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
==Application Security Architecture Review==&lt;br /&gt;
&lt;br /&gt;
Typically a table-top design level review and analysis of the application to identify critical assets, sensitive data stores and business critical interconnections.  The purpose of architecture reviews is to also aid in determining potential attack vectors, which could be used in testing.  Thus many organizations will blend this activity with Threat Assessment.  The review of the application and its interconnections should include both a network- and application-level evaluation.  Evaluation should identify areas of potential and actual vulnerability from these levels. This includes areas of vulnerability in the network and application architecture, in addition to a high-level measure of risk of each of those areas.&lt;br /&gt;
 &lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* Provides more depth to the development rationale of various functionality in the application life cycle. &lt;br /&gt;
* By using results from Architecture Review, the assessment (testing) team is able to follow development logic in the “how” and “why” business and security requirements were integrated into application behavior and security controls/constraints. &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee identification of all possible security threats. &lt;br /&gt;
* Because the scope of an architectural assessment is far more complex than the limited perspective of an application layer assessment, recommendations are similarly complex, sometimes involving “political” changes (i.e., security department’s level of involvement in the SDLC). &lt;br /&gt;
* Requires on-site discussions with application principals.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security dollars (i.e.,  incorporate security in beginning begets higher return on investment vs. fixing applications post production). &lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Manual Security-Focused Code Review==&lt;br /&gt;
&lt;br /&gt;
Review of the software source code to identify source code-level issues, which may enable an attacker to compromise an application, system, or business functionality. Web applications in particular are likely to have these vulnerabilities, as they are frequently developed quickly in an environment that does not allow for much security planning and testing. This should not be viewed as simply a generic software audit.  Security-focused code reviews should be specifically tailored to find common vulnerabilities in applications. &lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* If integrated into the [http://en.wikipedia.org/wiki/Software_development_life_cycle Software Development Life Cycle (SDLC)], coding issues can be resolved earlier in the development process. (which is much less expensive to fix than a post-production revision of the code).&lt;br /&gt;
* Provides the ability to identify and address serious coding issues (e.g., input validation, hard-coded credentials, debugging features, etc.) prior to production.&lt;br /&gt;
* Enables development teams to identify and correct insecure coding techniques that could lead to security vulnerabilities or possible incidents.&lt;br /&gt;
* Helps developers learn from each other and share knowledge on secure coding techniques, best practices and common solutions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* can be very time consuming and costly if automated tools are not available to help augment the review process&lt;br /&gt;
* If conducted solely by tools, results will be mostly static signature matching though some tools claim to walk codepath (follow nested loops and other regression through objects).&lt;br /&gt;
* Even applications that exhibit strong and thorough software development practices (e.g., documentation, seamless modularity, string checking to prevent buffer overflows, etc.) can fall victim to attack if the underlying business logic doesn’t follow security requirements.&lt;br /&gt;
* Requires specific programming expertise (e.g., Java, .NET, PHP, etc.) that many application testers do not have.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Security-focused code reviews should be conducted as part of the normal SDLC. Reviews may also be needed during or after security testing, prior to implementing system upgrades, prior to making system configuration changes, when new security bulletins are released, or immediately following any reported security incidents.&lt;br /&gt;
&lt;br /&gt;
==Automated Source Code Analysis==&lt;br /&gt;
&lt;br /&gt;
Automated source code analysis involves the use of special software &amp;quot;tools&amp;quot; to conduct [http://en.wikipedia.org/wiki/Static_code_analysis Static Code Analysis] on software source code to identify potential vulnerabilities within the code. &lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* can be very effective method for identifying defects in code functionality and syntax errors&lt;br /&gt;
* most automated source code analysis tools are highly scalable&lt;br /&gt;
* expedites code review process (can review 400-500 LOC/hr via manual review vs. up to 10,000 LOC/hr using automated source code scanning tools)&lt;br /&gt;
* helps teams focus their manual code review activities on flagged, high-risk areas &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* most automated source code analysis tools generate false positives &lt;br /&gt;
* some automated source code analysis tools have a significant learning curve&lt;br /&gt;
* some coding languages (such as ASP) are not supported by the tools&lt;br /&gt;
* results of automated scans are basically &amp;quot;blueprints&amp;quot; of source code vulnerabilities, so they must be properly protected&lt;br /&gt;
* Most of the automated source code analysis tools available on the market today can not identify logic errors, timing errors, resource conflicts, data errors and configuration errors.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Automated source code analysis tools can be used to enhance and improve an organization’s overall efforts to find and eliminate security vulnerabilities within software applications. However, they should not be viewed as a &amp;quot;silver bullet&amp;quot;. Manual code reviews must still be conducted to identify false positives and security-related defects that tools can not identify.&lt;br /&gt;
&lt;br /&gt;
==Automated External Application Scanning==&lt;br /&gt;
&lt;br /&gt;
Utilizing automated open source or commercial software to discover known application layer vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Able to quickly identify default content, misconfigurations and error conditions resulting from improper input.&lt;br /&gt;
* Ability to be run on automated, regular basis to provide baseline and ongoing vulnerability management metrics.&lt;br /&gt;
* Can reduce the time required to assess large applications.&lt;br /&gt;
* Lower cost to operate/execute (excluding initial capital cost if using commercial testing software).&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Not designed to determine the extent to which the vulnerabilities can be exploited to compromise the data the application handles.&lt;br /&gt;
* Requires appropriate skills/knowledge to use, configure, and interpret results (despite “point and click” vendor marketing claims).  &lt;br /&gt;
* Requires extensive configuration and customization to emulate a user session.&lt;br /&gt;
* Limited ability to correlate events and correlate minor issues that may lead to larger exposure.  &lt;br /&gt;
* Inability to adapt to dynamic responses in business logic flows.&lt;br /&gt;
* Unable to find vulnerabilities that only become apparent after performing a sequence of steps (e.g., business logic flow bypass, session state compromise, etc.).&lt;br /&gt;
* Unable to figure out “how deep the rabbit hole goes” – No means to interpret security implications, express extent of potential compromise, or identify seriousness of business and information exposure.  &lt;br /&gt;
* Tools will often be confused by some aspect of an application's behavior, causing a particular class of test to generate a false positive.  Because most tools lack intelligence and cannot adapt to such conditions, test results include a large number of identical false positives.   &lt;br /&gt;
** For valid findings, the tools will often find dozens or hundreds of nearly identical findings, each with the same root cause.  &lt;br /&gt;
* Tool based findings are only indications of problems. Manual review (by someone well versed in web application testing) is usually necessary to draw the necessary parallels between different findings, and determine which findings identify unique problems, and which represent repetition.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Handling routine, manually intensive steps (e.g., input validation, field “fuzzing”, etc.) in an assessment is useful, particularly in large applications. However, scanner-based results can be used as the starting point from which expert testing can take over.&lt;br /&gt;
* Testing less critical applications (i.e., applications that do not contain/handle business sensitive data and/or are not critical to business operation) where the perceived lower risk does not warrant performing hands-on testing.&lt;br /&gt;
* Testing critical applications as a prelude to expert testing or code reviews.&lt;br /&gt;
&lt;br /&gt;
If a tool is used, it is important to define the technical limitations of the tool when the findings are presented.  An example of this may involve noting the potential for SQL injection attacks based upon verbose SQL error messages, but also the tool’s inability to produce the correct syntax needed to extract specific information from the vulnerable database.  A failure to convey the differences between automated and expert testing increases the risk that the application assessment results will be interpreted (particularly by management) as being more “secure” than they actually are. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Manual Penetration Testing==&lt;br /&gt;
&lt;br /&gt;
Manual Penetration Testing involves application analysis performed by an experienced analyst, usually using a combination of open source automated utilities (either self created or through security community) for performing task-specific functions and hands-on analysis to attempt to further ‘hack’ the application as an attacker.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Open source tools utilized by the expert tester are developed usually for specific purposes rather than wrapping multiple functionality into a GUI. Typically are one of many components in the testers toolkit.&lt;br /&gt;
* “Expert testing” is an intuitive approach (Business logic analysis), with the ability to identify flaws in business logic that automated scanners are usually incapable of finding.&lt;br /&gt;
* Addresses many of the disadvantages noted in Automated Testing.&lt;br /&gt;
* Ability to correlate events and minor issues that may lead to larger exposure.  This is a critical advantage of hands-on testing and simulates how a real attacker would operate. &lt;br /&gt;
* Ability to communicate complex technical findings in a manner that all can understand.  The job is not done until the assessment end-client understands the nature of the vulnerability discovered and its security implications.  &lt;br /&gt;
** The analysis phase of expert testing provides “root cause” identification and recommendations based upon the unique, developmental characteristics of an application. Results from an automated tool cannot provide customized, specific recommendations tailored for each application and the end-client’s requirements.  &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Often confused with Automated Testing – Marketing of commercial tools uses terms such as “expert” and “intuitive”, normally associated with an assessment performed by an experienced analyst.&lt;br /&gt;
* Inability of most end-client organizations to determine if tester has appropriate application security skills required.  There are no community accepted credentials/certifications established for this area of security.&lt;br /&gt;
* Cost to conduct will be higher though there is no upfront capital cost.&lt;br /&gt;
* Without establishing clear metrics up front, ongoing testing to determine trends within business environment or iterations of application is difficult.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Testing critical applications (i.e., applications that do contain/handle business sensitive data and/or are critical to business operation) where the perceived higher risk does not warrant performing automated testing.&lt;br /&gt;
* Best suited for B2B, B2C and/or any transactional based and/or multi-level access application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References/Sources==&lt;br /&gt;
&lt;br /&gt;
* Testing Taxonomy &amp;amp; Testing Tools Classification : http://www.owasp.org/index.php/Image:AppSec2005DC-Arian_Evans_Tools-Taxonomy.ppt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Application Security Assessment Standards Project]]&lt;br /&gt;
{{Template:Stub}}&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10192</id>
		<title>Definition for Security Assessment Techniques</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10192"/>
				<updated>2006-10-05T21:18:58Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This article’s focus is to define, where practical, nomenclature and definitions of the differing security '''Assessment Techniques'''.  Agreement and establishment of these definitions are foundational to establishing the '''Assessment Levels''' later within this project.&lt;br /&gt;
&lt;br /&gt;
==Techniques==&lt;br /&gt;
&lt;br /&gt;
The following assessment techniques are proposed:&lt;br /&gt;
&lt;br /&gt;
* Application Security Threat Assessment&lt;br /&gt;
* Application Security Architecture Review&lt;br /&gt;
* Automated Security Code Scanning (Tool Based Static Analysis)&lt;br /&gt;
* Automated External Application Scanning (Tool Based) &lt;br /&gt;
* Manual Penetration Testing (Security Test Specialist)&lt;br /&gt;
* Manual Application Security Code Review (Software Security Specialist)&lt;br /&gt;
&lt;br /&gt;
NOTE: these should probably link to full articles on each subject&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Application Security Threat Assessment==&lt;br /&gt;
&lt;br /&gt;
Analyzes application architectural information to develop a threat profile for the application components.  &lt;br /&gt;
&lt;br /&gt;
* Identify the nature of the threats – the likely vulnerabilities of the given application and business.&lt;br /&gt;
&lt;br /&gt;
* Estimate the probability that those vulnerabilities might lead to a disruption and the type of impact – both expected and worst case – that might arise.&lt;br /&gt;
&lt;br /&gt;
* Analyze the different consequences and their likelihood of occurrence and determine which should be dealt with and what priority should be attached to mitigate.&lt;br /&gt;
&lt;br /&gt;
While the threats to each asset within the Application can be individually developed and mapped, a more efficient approach is to develop a master list of threat types and identify how these can be used to launch an attack on the Application and/or its components and potentially in turn the business itself.  A single threat may exploit a vulnerability to damage different types of assets. Conversely, several threat types may exploit disparate vulnerabilities in order to attack a single critical asset. Given the many-to-many relationships between threats and assets, it is best to use a simple representation of threat to asset mapping by listing threat types by each critical asset identified.&lt;br /&gt;
&lt;br /&gt;
A threat assessment should categorize threat types and threat agents but should focus on malicious threats and will not cover accidental and natural threats. The source of Malicious Threats (the attacker or perpetrator, in this context) can be classified as unauthorized and authorized. Threat vectors and operating environment more fully define how and why a particular “user” falls into one of these categories:&lt;br /&gt;
&lt;br /&gt;
Unauthorized: &lt;br /&gt;
* An attacker who does not have credentials to legitimately access the application&lt;br /&gt;
&lt;br /&gt;
Authorized:&lt;br /&gt;
* A legitimate user of the application&lt;br /&gt;
* A malicious insider&lt;br /&gt;
* A previously unauthorized user who has gained authorized access through compromise of a valid account or user session&lt;br /&gt;
&lt;br /&gt;
While the threat agents may have similar intent, varying reasons for engaging in illegal activities motivates them. Some authorized employees may willfully commit fraud for financial gain or engage in sabotage in order to disrupt routine operations. Theft, vandalism, intentional corruptions and alteration of information are also categorized as malicious threats.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* By using results from a threat assessment, the end-client is able to focus assessment (testing) activities based on business requirements and operational reality. &lt;br /&gt;
* Allows vulnerabilities discovered in other assessment types to be weighted and prioritized based on threat probability vs. raw vulnerability finding.&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee that all possible security threats will be uncovered. &lt;br /&gt;
* End-client must evaluate analysis and determine responses(s).&lt;br /&gt;
* Requires existence of application architecture documentation.&lt;br /&gt;
* Often confused with Risk Assessments, which weigh asset value, threat, and vulnerability in order to determine business risk.  Threat assessments focus on identifying only the threat component (vector(s) and probability).&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security resources (i.e.,  “bake in” security during application development begets higher return on investment vs. “bolting on” application security fixes post production).&lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
==Application Security Architecture Review==&lt;br /&gt;
&lt;br /&gt;
Typically a table-top design level review and analysis of the application to identify critical assets, sensitive data stores and business critical interconnections.  The purpose of architecture reviews is to also aid in determining potential attack vectors, which could be used in testing.  Thus many organizations will blend this activity with Threat Assessment.  The review of the application and its interconnections should include both a network- and application-level evaluation.  Evaluation should identify areas of potential and actual vulnerability from these levels. This includes areas of vulnerability in the network and application architecture, in addition to a high-level measure of risk of each of those areas.&lt;br /&gt;
 &lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* Provides more depth to the development rationale of various functionality in the application life cycle. &lt;br /&gt;
* By using results from Architecture Review, the assessment (testing) team is able to follow development logic in the “how” and “why” business and security requirements were integrated into application behavior and security controls/constraints. &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee identification of all possible security threats. &lt;br /&gt;
* Because the scope of an architectural assessment is far more complex than the limited perspective of an application layer assessment, recommendations are similarly complex, sometimes involving “political” changes (i.e., security department’s level of involvement in the SDLC). &lt;br /&gt;
* Requires on-site discussions with application principals.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security dollars (i.e.,  incorporate security in beginning begets higher return on investment vs. fixing applications post production). &lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
==Manual Security-Focused Code Review==&lt;br /&gt;
&lt;br /&gt;
Review of the software source code to identify source code-level issues, which may enable an attacker to compromise an application, system, or business functionality. Web applications in particular are likely to have these vulnerabilities, as they are frequently developed quickly in an environment that does not allow for much security planning and testing. This should not be viewed as simply a generic software audit.  Security-focused code reviews should be specifically tailored to find common vulnerabilities in applications. &lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* If integrated into the [http://en.wikipedia.org/wiki/Software_development_life_cycle Software Development Life Cycle (SDLC)], coding issues can be resolved earlier in the development process. (which is much less expensive to fix than a post-production revision of the code).&lt;br /&gt;
* Provides the ability to identify and address serious coding issues (e.g., input validation, hard-coded credentials, debugging features, etc.) prior to production.&lt;br /&gt;
* Enables development teams to identify and correct insecure coding techniques that could lead to security vulnerabilities or possible incidents.&lt;br /&gt;
* Helps developers learn from each other and share knowledge on secure coding techniques, best practices and common solutions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* can be very time consuming and costly if automated tools are not available to help augment the review process&lt;br /&gt;
* If conducted solely by tools, results will be mostly static signature matching though some tools claim to walk codepath (follow nested loops and other regression through objects).&lt;br /&gt;
* Even applications that exhibit strong and thorough software development practices (e.g., documentation, seamless modularity, string checking to prevent buffer overflows, etc.) can fall victim to attack if the underlying business logic doesn’t follow security requirements.&lt;br /&gt;
* Requires specific programming expertise (e.g., Java, .NET, PHP, etc.) that many application testers do not have.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Security-focused code reviews should be conducted as part of the normal SDLC. Reviews may also be needed during or after security testing, prior to implementing system upgrades, prior to making system configuration changes, when new security bulletins are released, or immediately following any reported security incidents.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Automated Source Code Analysis==&lt;br /&gt;
&lt;br /&gt;
Automated source code analysis involves the use of special software &amp;quot;tools&amp;quot; to conduct [http://en.wikipedia.org/wiki/Static_code_analysis Static Code Analysis] on software source code to identify potential vulnerabilities within the code. &lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* can be very effective method for identifying defects in code functionality and syntax errors&lt;br /&gt;
* most automated source code analysis tools are highly scalable&lt;br /&gt;
* expedites code review process (can review 400-500 LOC/hr via manual review vs. up to 10,000 LOC/hr using automated source code scanning tools)&lt;br /&gt;
* helps teams focus their manual code review activities on flagged, high-risk areas &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* most automated source code analysis tools generate false positives &lt;br /&gt;
* some automated source code analysis tools have a significant learning curve&lt;br /&gt;
* some coding languages (such as ASP) are not supported by the tools&lt;br /&gt;
* results of automated scans are basically &amp;quot;blueprints&amp;quot; of source code vulnerabilities, so they must be properly protected&lt;br /&gt;
* Most of the automated source code analysis tools available on the market today can not identify logic errors, timing errors, resource conflicts, data errors and configuration errors.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Automated source code analysis tools can be used to enhance and improve an organization’s overall efforts to find and eliminate security vulnerabilities within software applications. However, they should not be viewed as a &amp;quot;silver bullet&amp;quot;. Manual code reviews must still be conducted to identify false positives and security-related defects that tools can not identify.&lt;br /&gt;
&lt;br /&gt;
==Automated External Application Scanning==&lt;br /&gt;
&lt;br /&gt;
Utilizing automated open source or commercial software to discover known application layer vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Able to quickly identify default content, misconfigurations and error conditions resulting from improper input.&lt;br /&gt;
* Ability to be run on automated, regular basis to provide baseline and ongoing vulnerability management metrics.&lt;br /&gt;
* Can reduce the time required to assess large applications.&lt;br /&gt;
* Lower cost to operate/execute (excluding initial capital cost if using commercial testing software).&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Not designed to determine the extent to which the vulnerabilities can be exploited to compromise the data the application handles.&lt;br /&gt;
* Requires appropriate skills/knowledge to use, configure, and interpret results (despite “point and click” vendor marketing claims).  &lt;br /&gt;
* Requires extensive configuration and customization to emulate a user session.&lt;br /&gt;
* Limited ability to correlate events and correlate minor issues that may lead to larger exposure.  &lt;br /&gt;
* Inability to adapt to dynamic responses in business logic flows.&lt;br /&gt;
* Unable to find vulnerabilities that only become apparent after performing a sequence of steps (e.g., business logic flow bypass, session state compromise, etc.).&lt;br /&gt;
* Unable to figure out “how deep the rabbit hole goes” – No means to interpret security implications, express extent of potential compromise, or identify seriousness of business and information exposure.  &lt;br /&gt;
* Tools will often be confused by some aspect of an application's behavior, causing a particular class of test to generate a false positive.  Because most tools lack intelligence and cannot adapt to such conditions, test results include a large number of identical false positives.   &lt;br /&gt;
** For valid findings, the tools will often find dozens or hundreds of nearly identical findings, each with the same root cause.  &lt;br /&gt;
* Tool based findings are only indications of problems. Manual review (by someone well versed in web application testing) is usually necessary to draw the necessary parallels between different findings, and determine which findings identify unique problems, and which represent repetition.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Handling routine, manually intensive steps (e.g., input validation, field “fuzzing”, etc.) in an assessment is useful, particularly in large applications. However, scanner-based results can be used as the starting point from which expert testing can take over.&lt;br /&gt;
* Testing less critical applications (i.e., applications that do not contain/handle business sensitive data and/or are not critical to business operation) where the perceived lower risk does not warrant performing hands-on testing.&lt;br /&gt;
* Testing critical applications as a prelude to expert testing or code reviews.&lt;br /&gt;
&lt;br /&gt;
If a tool is used, it is important to define the technical limitations of the tool when the findings are presented.  An example of this may involve noting the potential for SQL injection attacks based upon verbose SQL error messages, but also the tool’s inability to produce the correct syntax needed to extract specific information from the vulnerable database.  A failure to convey the differences between automated and expert testing increases the risk that the application assessment results will be interpreted (particularly by management) as being more “secure” than they actually are. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Manual Penetration Testing==&lt;br /&gt;
&lt;br /&gt;
Manual Penetration Testing involves application analysis performed by an experienced analyst, usually using a combination of open source automated utilities (either self created or through security community) for performing task-specific functions and hands-on analysis to attempt to further ‘hack’ the application as an attacker.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Open source tools utilized by the expert tester are developed usually for specific purposes rather than wrapping multiple functionality into a GUI. Typically are one of many components in the testers toolkit.&lt;br /&gt;
* “Expert testing” is an intuitive approach (Business logic analysis), with the ability to identify flaws in business logic that automated scanners are usually incapable of finding.&lt;br /&gt;
* Addresses many of the disadvantages noted in Automated Testing.&lt;br /&gt;
* Ability to correlate events and minor issues that may lead to larger exposure.  This is a critical advantage of hands-on testing and simulates how a real attacker would operate. &lt;br /&gt;
* Ability to communicate complex technical findings in a manner that all can understand.  The job is not done until the assessment end-client understands the nature of the vulnerability discovered and its security implications.  &lt;br /&gt;
** The analysis phase of expert testing provides “root cause” identification and recommendations based upon the unique, developmental characteristics of an application. Results from an automated tool cannot provide customized, specific recommendations tailored for each application and the end-client’s requirements.  &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Often confused with Automated Testing – Marketing of commercial tools uses terms such as “expert” and “intuitive”, normally associated with an assessment performed by an experienced analyst.&lt;br /&gt;
* Inability of most end-client organizations to determine if tester has appropriate application security skills required.  There are no community accepted credentials/certifications established for this area of security.&lt;br /&gt;
* Cost to conduct will be higher though there is no upfront capital cost.&lt;br /&gt;
* Without establishing clear metrics up front, ongoing testing to determine trends within business environment or iterations of application is difficult.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Testing critical applications (i.e., applications that do contain/handle business sensitive data and/or are critical to business operation) where the perceived higher risk does not warrant performing automated testing.&lt;br /&gt;
* Best suited for B2B, B2C and/or any transactional based and/or multi-level access application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References/Sources==&lt;br /&gt;
&lt;br /&gt;
* Testing Taxonomy &amp;amp; Testing Tools Classification : http://www.owasp.org/index.php/Image:AppSec2005DC-Arian_Evans_Tools-Taxonomy.ppt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Application Security Assessment Standards Project]]&lt;br /&gt;
{{Template:Stub}}&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10191</id>
		<title>Definition for Security Assessment Techniques</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10191"/>
				<updated>2006-10-05T21:06:02Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* Automated Source Code Analysis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This article’s focus is to define, where practical, nomenclature and definitions of the differing security '''Assessment Techniques'''.  Agreement and establishment of these definitions are foundational to establishing the '''Assessment Levels''' later within this project.&lt;br /&gt;
&lt;br /&gt;
==Techniques==&lt;br /&gt;
&lt;br /&gt;
The following assessment techniques are proposed:&lt;br /&gt;
&lt;br /&gt;
* Application Security Threat Assessment&lt;br /&gt;
* Application Security Architecture Review&lt;br /&gt;
* Automated Security Code Scanning (Tool Based Static Analysis)&lt;br /&gt;
* Automated External Application Scanning (Tool Based) &lt;br /&gt;
* Manual Penetration Testing (Security Test Specialist)&lt;br /&gt;
* Manual Application Security Code Review (Software Security Specialist)&lt;br /&gt;
&lt;br /&gt;
NOTE: these should probably link to full articles on each subject&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Application Security Threat Assessment==&lt;br /&gt;
&lt;br /&gt;
Analyzes application architectural information to develop a threat profile for the application components.  &lt;br /&gt;
&lt;br /&gt;
* Identify the nature of the threats – the likely vulnerabilities of the given application and business.&lt;br /&gt;
&lt;br /&gt;
* Estimate the probability that those vulnerabilities might lead to a disruption and the type of impact – both expected and worst case – that might arise.&lt;br /&gt;
&lt;br /&gt;
* Analyze the different consequences and their likelihood of occurrence and determine which should be dealt with and what priority should be attached to mitigate.&lt;br /&gt;
&lt;br /&gt;
While the threats to each asset within the Application can be individually developed and mapped, a more efficient approach is to develop a master list of threat types and identify how these can be used to launch an attack on the Application and/or its components and potentially in turn the business itself.  A single threat may exploit a vulnerability to damage different types of assets. Conversely, several threat types may exploit disparate vulnerabilities in order to attack a single critical asset. Given the many-to-many relationships between threats and assets, it is best to use a simple representation of threat to asset mapping by listing threat types by each critical asset identified.&lt;br /&gt;
&lt;br /&gt;
A threat assessment should categorize threat types and threat agents but should focus on malicious threats and will not cover accidental and natural threats. The source of Malicious Threats (the attacker or perpetrator, in this context) can be classified as unauthorized and authorized. Threat vectors and operating environment more fully define how and why a particular “user” falls into one of these categories:&lt;br /&gt;
&lt;br /&gt;
Unauthorized: &lt;br /&gt;
* An attacker who does not have credentials to legitimately access the application&lt;br /&gt;
&lt;br /&gt;
Authorized:&lt;br /&gt;
* A legitimate user of the application&lt;br /&gt;
* A malicious insider&lt;br /&gt;
* A previously unauthorized user who has gained authorized access through compromise of a valid account or user session&lt;br /&gt;
&lt;br /&gt;
While the threat agents may have similar intent, varying reasons for engaging in illegal activities motivates them. Some authorized employees may willfully commit fraud for financial gain or engage in sabotage in order to disrupt routine operations. Theft, vandalism, intentional corruptions and alteration of information are also categorized as malicious threats.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* By using results from a threat assessment, the end-client is able to focus assessment (testing) activities based on business requirements and operational reality. &lt;br /&gt;
* Allows vulnerabilities discovered in other assessment types to be weighted and prioritized based on threat probability vs. raw vulnerability finding.&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee that all possible security threats will be uncovered. &lt;br /&gt;
* End-client must evaluate analysis and determine responses(s).&lt;br /&gt;
* Requires existence of application architecture documentation.&lt;br /&gt;
* Often confused with Risk Assessments, which weigh asset value, threat, and vulnerability in order to determine business risk.  Threat assessments focus on identifying only the threat component (vector(s) and probability).&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security resources (i.e.,  “bake in” security during application development begets higher return on investment vs. “bolting on” application security fixes post production).&lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
==Application Security Architecture Review==&lt;br /&gt;
&lt;br /&gt;
Typically a table-top design level review and analysis of the application to identify critical assets, sensitive data stores and business critical interconnections.  The purpose of architecture reviews is to also aid in determining potential attack vectors, which could be used in testing.  Thus many organizations will blend this activity with Threat Assessment.  The review of the application and its interconnections should include both a network- and application-level evaluation.  Evaluation should identify areas of potential and actual vulnerability from these levels. This includes areas of vulnerability in the network and application architecture, in addition to a high-level measure of risk of each of those areas.&lt;br /&gt;
 &lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* Provides more depth to the development rationale of various functionality in the application life cycle. &lt;br /&gt;
* By using results from Architecture Review, the assessment (testing) team is able to follow development logic in the “how” and “why” business and security requirements were integrated into application behavior and security controls/constraints. &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee identification of all possible security threats. &lt;br /&gt;
* Because the scope of an architectural assessment is far more complex than the limited perspective of an application layer assessment, recommendations are similarly complex, sometimes involving “political” changes (i.e., security department’s level of involvement in the SDLC). &lt;br /&gt;
* Requires on-site discussions with application principals.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security dollars (i.e.,  incorporate security in beginning begets higher return on investment vs. fixing applications post production). &lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Automated Source Code Analysis==&lt;br /&gt;
&lt;br /&gt;
Automated source code analysis involves the use of special software &amp;quot;tools&amp;quot; to conduct [http://en.wikipedia.org/wiki/Static_code_analysis Static Code Analysis] on software source code to identify potential vulnerabilities within the code. &lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* can be very effective method for identifying defects in code functionality and syntax errors&lt;br /&gt;
* most automated source code analysis tools are highly scalable&lt;br /&gt;
* expedites code review process (can review 400-500 LOC/hr via manual review vs. up to 10,000 LOC/hr using automated source code scanning tools)&lt;br /&gt;
* helps teams focus their manual code review activities on flagged, high-risk areas &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* most automated source code analysis tools generate false positives &lt;br /&gt;
* some automated source code analysis tools have a significant learning curve&lt;br /&gt;
* some coding languages (such as ASP) are not supported by the tools&lt;br /&gt;
* results of automated scans are basically &amp;quot;blueprints&amp;quot; of source code vulnerabilities, so they must be properly protected&lt;br /&gt;
* Most of the automated source code analysis tools available on the market today can not identify logic errors, timing errors, resource conflicts, data errors and configuration errors.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Automated source code analysis tools can be used to enhance and improve an organization’s overall efforts to find and eliminate security vulnerabilities within software applications. However, they should not be viewed as a &amp;quot;silver bullet&amp;quot;. Manual code reviews must still be conducted to identify false positives and security-related defects that tools can not identify.&lt;br /&gt;
&lt;br /&gt;
==Automated External Application Scanning==&lt;br /&gt;
&lt;br /&gt;
Utilizing automated open source or commercial software to discover known application layer vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Able to quickly identify default content, misconfigurations and error conditions resulting from improper input.&lt;br /&gt;
* Ability to be run on automated, regular basis to provide baseline and ongoing vulnerability management metrics.&lt;br /&gt;
* Can reduce the time required to assess large applications.&lt;br /&gt;
* Lower cost to operate/execute (excluding initial capital cost if using commercial testing software).&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Not designed to determine the extent to which the vulnerabilities can be exploited to compromise the data the application handles.&lt;br /&gt;
* Requires appropriate skills/knowledge to use, configure, and interpret results (despite “point and click” vendor marketing claims).  &lt;br /&gt;
* Requires extensive configuration and customization to emulate a user session.&lt;br /&gt;
* Limited ability to correlate events and correlate minor issues that may lead to larger exposure.  &lt;br /&gt;
* Inability to adapt to dynamic responses in business logic flows.&lt;br /&gt;
* Unable to find vulnerabilities that only become apparent after performing a sequence of steps (e.g., business logic flow bypass, session state compromise, etc.).&lt;br /&gt;
* Unable to figure out “how deep the rabbit hole goes” – No means to interpret security implications, express extent of potential compromise, or identify seriousness of business and information exposure.  &lt;br /&gt;
* Tools will often be confused by some aspect of an application's behavior, causing a particular class of test to generate a false positive.  Because most tools lack intelligence and cannot adapt to such conditions, test results include a large number of identical false positives.   &lt;br /&gt;
** For valid findings, the tools will often find dozens or hundreds of nearly identical findings, each with the same root cause.  &lt;br /&gt;
* Tool based findings are only indications of problems. Manual review (by someone well versed in web application testing) is usually necessary to draw the necessary parallels between different findings, and determine which findings identify unique problems, and which represent repetition.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Handling routine, manually intensive steps (e.g., input validation, field “fuzzing”, etc.) in an assessment is useful, particularly in large applications. However, scanner-based results can be used as the starting point from which expert testing can take over.&lt;br /&gt;
* Testing less critical applications (i.e., applications that do not contain/handle business sensitive data and/or are not critical to business operation) where the perceived lower risk does not warrant performing hands-on testing.&lt;br /&gt;
* Testing critical applications as a prelude to expert testing or code reviews.&lt;br /&gt;
&lt;br /&gt;
If a tool is used, it is important to define the technical limitations of the tool when the findings are presented.  An example of this may involve noting the potential for SQL injection attacks based upon verbose SQL error messages, but also the tool’s inability to produce the correct syntax needed to extract specific information from the vulnerable database.  A failure to convey the differences between automated and expert testing increases the risk that the application assessment results will be interpreted (particularly by management) as being more “secure” than they actually are. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Manual Penetration Testing==&lt;br /&gt;
&lt;br /&gt;
Manual Penetration Testing involves application analysis performed by an experienced analyst, usually using a combination of open source automated utilities (either self created or through security community) for performing task-specific functions and hands-on analysis to attempt to further ‘hack’ the application as an attacker.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Open source tools utilized by the expert tester are developed usually for specific purposes rather than wrapping multiple functionality into a GUI. Typically are one of many components in the testers toolkit.&lt;br /&gt;
* “Expert testing” is an intuitive approach (Business logic analysis), with the ability to identify flaws in business logic that automated scanners are usually incapable of finding.&lt;br /&gt;
* Addresses many of the disadvantages noted in Automated Testing.&lt;br /&gt;
* Ability to correlate events and minor issues that may lead to larger exposure.  This is a critical advantage of hands-on testing and simulates how a real attacker would operate. &lt;br /&gt;
* Ability to communicate complex technical findings in a manner that all can understand.  The job is not done until the assessment end-client understands the nature of the vulnerability discovered and its security implications.  &lt;br /&gt;
** The analysis phase of expert testing provides “root cause” identification and recommendations based upon the unique, developmental characteristics of an application. Results from an automated tool cannot provide customized, specific recommendations tailored for each application and the end-client’s requirements.  &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Often confused with Automated Testing – Marketing of commercial tools uses terms such as “expert” and “intuitive”, normally associated with an assessment performed by an experienced analyst.&lt;br /&gt;
* Inability of most end-client organizations to determine if tester has appropriate application security skills required.  There are no community accepted credentials/certifications established for this area of security.&lt;br /&gt;
* Cost to conduct will be higher though there is no upfront capital cost.&lt;br /&gt;
* Without establishing clear metrics up front, ongoing testing to determine trends within business environment or iterations of application is difficult.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Testing critical applications (i.e., applications that do contain/handle business sensitive data and/or are critical to business operation) where the perceived higher risk does not warrant performing automated testing.&lt;br /&gt;
* Best suited for B2B, B2C and/or any transactional based and/or multi-level access application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Manual Application Security Code Review==&lt;br /&gt;
&lt;br /&gt;
Reviews the underlying foundational level to identify coding issues, which may create/enable an attacker to compromise an applications systems and/or business functionality. Web applications in particular are likely to have these vulnerabilities, as they are frequently developed quickly in an environment that does not allow for much security planning and testing. This should not be viewed as simply a generic software audit.  Code reviews should be specifically tailored to find vulnerabilities common in applications. &lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* If integrated into application SDLC, coding issues can be resolved early in the development and functional testing process. (which is much less expensive to fix than a post-production revision of the code).&lt;br /&gt;
* Provides the ability to identify and address serious coding issues (e.g., input validation, hard-coded credentials, debugging features, etc.) prior to production.&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* …&lt;br /&gt;
* If conducted solely by tools, results will be mostly static signature matching though some tools claim to walk codepath (follow nested loops and other regression through objects).&lt;br /&gt;
* Even applications that exhibit strong and thorough software development practices (e.g., documentation, seamless modularity, string checking to prevent buffer overflows, etc.) can fall victim to attack if the underlying business logic doesn’t follow security requirements.&lt;br /&gt;
* Requires specific programming expertise (e.g., Java, .NET, PHP, etc.) that many application testers do not have.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References/Sources==&lt;br /&gt;
&lt;br /&gt;
* Testing Taxonomy &amp;amp; Testing Tools Classification : http://www.owasp.org/index.php/Image:AppSec2005DC-Arian_Evans_Tools-Taxonomy.ppt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Application Security Assessment Standards Project]]&lt;br /&gt;
{{Template:Stub}}&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10190</id>
		<title>Definition for Security Assessment Techniques</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Definition_for_Security_Assessment_Techniques&amp;diff=10190"/>
				<updated>2006-10-05T20:26:33Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* Automated Security Code Scanning */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This article’s focus is to define, where practical, nomenclature and definitions of the differing security '''Assessment Techniques'''.  Agreement and establishment of these definitions are foundational to establishing the '''Assessment Levels''' later within this project.&lt;br /&gt;
&lt;br /&gt;
==Techniques==&lt;br /&gt;
&lt;br /&gt;
The following assessment techniques are proposed:&lt;br /&gt;
&lt;br /&gt;
* Application Security Threat Assessment&lt;br /&gt;
* Application Security Architecture Review&lt;br /&gt;
* Automated Security Code Scanning (Tool Based Static Analysis)&lt;br /&gt;
* Automated External Application Scanning (Tool Based) &lt;br /&gt;
* Manual Penetration Testing (Security Test Specialist)&lt;br /&gt;
* Manual Application Security Code Review (Software Security Specialist)&lt;br /&gt;
&lt;br /&gt;
NOTE: these should probably link to full articles on each subject&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Application Security Threat Assessment==&lt;br /&gt;
&lt;br /&gt;
Analyzes application architectural information to develop a threat profile for the application components.  &lt;br /&gt;
&lt;br /&gt;
* Identify the nature of the threats – the likely vulnerabilities of the given application and business.&lt;br /&gt;
&lt;br /&gt;
* Estimate the probability that those vulnerabilities might lead to a disruption and the type of impact – both expected and worst case – that might arise.&lt;br /&gt;
&lt;br /&gt;
* Analyze the different consequences and their likelihood of occurrence and determine which should be dealt with and what priority should be attached to mitigate.&lt;br /&gt;
&lt;br /&gt;
While the threats to each asset within the Application can be individually developed and mapped, a more efficient approach is to develop a master list of threat types and identify how these can be used to launch an attack on the Application and/or its components and potentially in turn the business itself.  A single threat may exploit a vulnerability to damage different types of assets. Conversely, several threat types may exploit disparate vulnerabilities in order to attack a single critical asset. Given the many-to-many relationships between threats and assets, it is best to use a simple representation of threat to asset mapping by listing threat types by each critical asset identified.&lt;br /&gt;
&lt;br /&gt;
A threat assessment should categorize threat types and threat agents but should focus on malicious threats and will not cover accidental and natural threats. The source of Malicious Threats (the attacker or perpetrator, in this context) can be classified as unauthorized and authorized. Threat vectors and operating environment more fully define how and why a particular “user” falls into one of these categories:&lt;br /&gt;
&lt;br /&gt;
Unauthorized: &lt;br /&gt;
* An attacker who does not have credentials to legitimately access the application&lt;br /&gt;
&lt;br /&gt;
Authorized:&lt;br /&gt;
* A legitimate user of the application&lt;br /&gt;
* A malicious insider&lt;br /&gt;
* A previously unauthorized user who has gained authorized access through compromise of a valid account or user session&lt;br /&gt;
&lt;br /&gt;
While the threat agents may have similar intent, varying reasons for engaging in illegal activities motivates them. Some authorized employees may willfully commit fraud for financial gain or engage in sabotage in order to disrupt routine operations. Theft, vandalism, intentional corruptions and alteration of information are also categorized as malicious threats.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* By using results from a threat assessment, the end-client is able to focus assessment (testing) activities based on business requirements and operational reality. &lt;br /&gt;
* Allows vulnerabilities discovered in other assessment types to be weighted and prioritized based on threat probability vs. raw vulnerability finding.&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee that all possible security threats will be uncovered. &lt;br /&gt;
* End-client must evaluate analysis and determine responses(s).&lt;br /&gt;
* Requires existence of application architecture documentation.&lt;br /&gt;
* Often confused with Risk Assessments, which weigh asset value, threat, and vulnerability in order to determine business risk.  Threat assessments focus on identifying only the threat component (vector(s) and probability).&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security resources (i.e.,  “bake in” security during application development begets higher return on investment vs. “bolting on” application security fixes post production).&lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
==Application Security Architecture Review==&lt;br /&gt;
&lt;br /&gt;
Typically a table-top design level review and analysis of the application to identify critical assets, sensitive data stores and business critical interconnections.  The purpose of architecture reviews is to also aid in determining potential attack vectors, which could be used in testing.  Thus many organizations will blend this activity with Threat Assessment.  The review of the application and its interconnections should include both a network- and application-level evaluation.  Evaluation should identify areas of potential and actual vulnerability from these levels. This includes areas of vulnerability in the network and application architecture, in addition to a high-level measure of risk of each of those areas.&lt;br /&gt;
 &lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Aids in focusing testing activities and defining true targets in large scale enterprise level applications.&lt;br /&gt;
* Provides more depth to the development rationale of various functionality in the application life cycle. &lt;br /&gt;
* By using results from Architecture Review, the assessment (testing) team is able to follow development logic in the “how” and “why” business and security requirements were integrated into application behavior and security controls/constraints. &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Cannot guarantee identification of all possible security threats. &lt;br /&gt;
* Because the scope of an architectural assessment is far more complex than the limited perspective of an application layer assessment, recommendations are similarly complex, sometimes involving “political” changes (i.e., security department’s level of involvement in the SDLC). &lt;br /&gt;
* Requires on-site discussions with application principals.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Best as a precursor to development activities allowing best use of security dollars (i.e.,  incorporate security in beginning begets higher return on investment vs. fixing applications post production). &lt;br /&gt;
* Best utilized to determine the need and extent for further assessment (testing) activities (e.g., automated testing, expert testing, code review, etc.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Automated Security Code Scanning==&lt;br /&gt;
&lt;br /&gt;
Involves the use of one or more software tools to conduct automated [Static_code_analysis]&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
==Automated External Application Scanning==&lt;br /&gt;
&lt;br /&gt;
Utilizing automated open source or commercial software to discover known application layer vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Able to quickly identify default content, misconfigurations and error conditions resulting from improper input.&lt;br /&gt;
* Ability to be run on automated, regular basis to provide baseline and ongoing vulnerability management metrics.&lt;br /&gt;
* Can reduce the time required to assess large applications.&lt;br /&gt;
* Lower cost to operate/execute (excluding initial capital cost if using commercial testing software).&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Not designed to determine the extent to which the vulnerabilities can be exploited to compromise the data the application handles.&lt;br /&gt;
* Requires appropriate skills/knowledge to use, configure, and interpret results (despite “point and click” vendor marketing claims).  &lt;br /&gt;
* Requires extensive configuration and customization to emulate a user session.&lt;br /&gt;
* Limited ability to correlate events and correlate minor issues that may lead to larger exposure.  &lt;br /&gt;
* Inability to adapt to dynamic responses in business logic flows.&lt;br /&gt;
* Unable to find vulnerabilities that only become apparent after performing a sequence of steps (e.g., business logic flow bypass, session state compromise, etc.).&lt;br /&gt;
* Unable to figure out “how deep the rabbit hole goes” – No means to interpret security implications, express extent of potential compromise, or identify seriousness of business and information exposure.  &lt;br /&gt;
* Tools will often be confused by some aspect of an application's behavior, causing a particular class of test to generate a false positive.  Because most tools lack intelligence and cannot adapt to such conditions, test results include a large number of identical false positives.   &lt;br /&gt;
** For valid findings, the tools will often find dozens or hundreds of nearly identical findings, each with the same root cause.  &lt;br /&gt;
* Tool based findings are only indications of problems. Manual review (by someone well versed in web application testing) is usually necessary to draw the necessary parallels between different findings, and determine which findings identify unique problems, and which represent repetition.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Handling routine, manually intensive steps (e.g., input validation, field “fuzzing”, etc.) in an assessment is useful, particularly in large applications. However, scanner-based results can be used as the starting point from which expert testing can take over.&lt;br /&gt;
* Testing less critical applications (i.e., applications that do not contain/handle business sensitive data and/or are not critical to business operation) where the perceived lower risk does not warrant performing hands-on testing.&lt;br /&gt;
* Testing critical applications as a prelude to expert testing or code reviews.&lt;br /&gt;
&lt;br /&gt;
If a tool is used, it is important to define the technical limitations of the tool when the findings are presented.  An example of this may involve noting the potential for SQL injection attacks based upon verbose SQL error messages, but also the tool’s inability to produce the correct syntax needed to extract specific information from the vulnerable database.  A failure to convey the differences between automated and expert testing increases the risk that the application assessment results will be interpreted (particularly by management) as being more “secure” than they actually are. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Manual Penetration Testing==&lt;br /&gt;
&lt;br /&gt;
Manual Penetration Testing involves application analysis performed by an experienced analyst, usually using a combination of open source automated utilities (either self created or through security community) for performing task-specific functions and hands-on analysis to attempt to further ‘hack’ the application as an attacker.&lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* Open source tools utilized by the expert tester are developed usually for specific purposes rather than wrapping multiple functionality into a GUI. Typically are one of many components in the testers toolkit.&lt;br /&gt;
* “Expert testing” is an intuitive approach (Business logic analysis), with the ability to identify flaws in business logic that automated scanners are usually incapable of finding.&lt;br /&gt;
* Addresses many of the disadvantages noted in Automated Testing.&lt;br /&gt;
* Ability to correlate events and minor issues that may lead to larger exposure.  This is a critical advantage of hands-on testing and simulates how a real attacker would operate. &lt;br /&gt;
* Ability to communicate complex technical findings in a manner that all can understand.  The job is not done until the assessment end-client understands the nature of the vulnerability discovered and its security implications.  &lt;br /&gt;
** The analysis phase of expert testing provides “root cause” identification and recommendations based upon the unique, developmental characteristics of an application. Results from an automated tool cannot provide customized, specific recommendations tailored for each application and the end-client’s requirements.  &lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* Often confused with Automated Testing – Marketing of commercial tools uses terms such as “expert” and “intuitive”, normally associated with an assessment performed by an experienced analyst.&lt;br /&gt;
* Inability of most end-client organizations to determine if tester has appropriate application security skills required.  There are no community accepted credentials/certifications established for this area of security.&lt;br /&gt;
* Cost to conduct will be higher though there is no upfront capital cost.&lt;br /&gt;
* Without establishing clear metrics up front, ongoing testing to determine trends within business environment or iterations of application is difficult.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* Testing critical applications (i.e., applications that do contain/handle business sensitive data and/or are critical to business operation) where the perceived higher risk does not warrant performing automated testing.&lt;br /&gt;
* Best suited for B2B, B2C and/or any transactional based and/or multi-level access application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Manual Application Security Code Review==&lt;br /&gt;
&lt;br /&gt;
Reviews the underlying foundational level to identify coding issues, which may create/enable an attacker to compromise an applications systems and/or business functionality. Web applications in particular are likely to have these vulnerabilities, as they are frequently developed quickly in an environment that does not allow for much security planning and testing. This should not be viewed as simply a generic software audit.  Code reviews should be specifically tailored to find vulnerabilities common in applications. &lt;br /&gt;
&lt;br /&gt;
''Advantages:''&lt;br /&gt;
* If integrated into application SDLC, coding issues can be resolved early in the development and functional testing process. (which is much less expensive to fix than a post-production revision of the code).&lt;br /&gt;
* Provides the ability to identify and address serious coding issues (e.g., input validation, hard-coded credentials, debugging features, etc.) prior to production.&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
''Disadvantages:''&lt;br /&gt;
* …&lt;br /&gt;
* If conducted solely by tools, results will be mostly static signature matching though some tools claim to walk codepath (follow nested loops and other regression through objects).&lt;br /&gt;
* Even applications that exhibit strong and thorough software development practices (e.g., documentation, seamless modularity, string checking to prevent buffer overflows, etc.) can fall victim to attack if the underlying business logic doesn’t follow security requirements.&lt;br /&gt;
* Requires specific programming expertise (e.g., Java, .NET, PHP, etc.) that many application testers do not have.&lt;br /&gt;
&lt;br /&gt;
Recommended use:&lt;br /&gt;
* …&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References/Sources==&lt;br /&gt;
&lt;br /&gt;
* Testing Taxonomy &amp;amp; Testing Tools Classification : http://www.owasp.org/index.php/Image:AppSec2005DC-Arian_Evans_Tools-Taxonomy.ppt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Application Security Assessment Standards Project]]&lt;br /&gt;
{{Template:Stub}}&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Blind_XPath_Injection&amp;diff=9579</id>
		<title>Blind XPath Injection</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Blind_XPath_Injection&amp;diff=9579"/>
				<updated>2006-09-08T20:27:31Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* Blind XPath Injection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Stub}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===About XPath===&lt;br /&gt;
XPath is a sort of query language that describes how to locate specific elements (including attributes, processing instructions, etc.) in an XML document. Since it is a query language, XPath is somewhat similar to Structured Query Language (SQL). However, XPath can be used to reference almost any part of any XML document without access control restrictions, whereas with SQL, a &amp;quot;user&amp;quot; (which is a term undefined in the XPath/XML context) may be restricted to certain tables, columns or queries. [http://www.w3.org/TR/xpath]&lt;br /&gt;
&lt;br /&gt;
===Simple XPath Injection===&lt;br /&gt;
Before you can understand what Blind XPath Injection is, you must first have a basic understanding of Simple XPath Injection. So, lets suppose an application includes the following ASP.NET and C# source code:&lt;br /&gt;
  ...&lt;br /&gt;
  XmlDocument XmlDoc = new XmlDocument();&lt;br /&gt;
  XmlDoc.Load(&amp;quot;...&amp;quot;);&lt;br /&gt;
  ...&lt;br /&gt;
  XPathNavigator nav = XmlDoc.CreateNavigator();&lt;br /&gt;
  XPathExpression expr = nav.Compile(&amp;quot;string(//user[name/text()='&amp;quot;+UserID.Text+&lt;br /&gt;
     &amp;quot;' and password/text()='&amp;quot;+Password.Text+&lt;br /&gt;
     &amp;quot;']/account/text())&amp;quot;);&lt;br /&gt;
  String account=Convert.ToString(nav.Evaluate(expr));&lt;br /&gt;
  if (account==&amp;quot;&amp;quot;)&lt;br /&gt;
  {&lt;br /&gt;
  // Login failed - UserUD and password pair could not be found in the XML document &lt;br /&gt;
  ...&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
  // Login succeeded - UserID and Password validated&lt;br /&gt;
  ...&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Based on the way this sample code is written, an attacker could try to inject an XPath expression into the UserID text field. For example, the attacker could enter the following text into the UserID text field (just like with SQL injection):&lt;br /&gt;
&lt;br /&gt;
' or 1=1 or ''='&lt;br /&gt;
&lt;br /&gt;
If this entry is not handled properly by the application, then the application will return the first account number in the XML document. If that occurs, the attacker will be logged in as the first user listed in the XML document.&lt;br /&gt;
&lt;br /&gt;
===Blind XPath Injection===&lt;br /&gt;
&lt;br /&gt;
==Examples ==&lt;br /&gt;
&lt;br /&gt;
==Related Threats==&lt;br /&gt;
&lt;br /&gt;
==Related Attacks==&lt;br /&gt;
&lt;br /&gt;
==Related Vulnerabilities==&lt;br /&gt;
&lt;br /&gt;
==Related Countermeasures==&lt;br /&gt;
&lt;br /&gt;
[[Category:Attack]]&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Blind_XPath_Injection&amp;diff=9578</id>
		<title>Blind XPath Injection</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Blind_XPath_Injection&amp;diff=9578"/>
				<updated>2006-09-08T20:26:06Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* Simple XPath Injection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Stub}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===About XPath===&lt;br /&gt;
XPath is a sort of query language that describes how to locate specific elements (including attributes, processing instructions, etc.) in an XML document. Since it is a query language, XPath is somewhat similar to Structured Query Language (SQL). However, XPath can be used to reference almost any part of any XML document without access control restrictions, whereas with SQL, a &amp;quot;user&amp;quot; (which is a term undefined in the XPath/XML context) may be restricted to certain tables, columns or queries. [http://www.w3.org/TR/xpath]&lt;br /&gt;
&lt;br /&gt;
===Simple XPath Injection===&lt;br /&gt;
Before you can understand what Blind XPath Injection is, you must first have a basic understanding of Simple XPath Injection. So, lets suppose an application includes the following ASP.NET and C# source code:&lt;br /&gt;
  ...&lt;br /&gt;
  XmlDocument XmlDoc = new XmlDocument();&lt;br /&gt;
  XmlDoc.Load(&amp;quot;...&amp;quot;);&lt;br /&gt;
  ...&lt;br /&gt;
  XPathNavigator nav = XmlDoc.CreateNavigator();&lt;br /&gt;
  XPathExpression expr = nav.Compile(&amp;quot;string(//user[name/text()='&amp;quot;+UserID.Text+&lt;br /&gt;
     &amp;quot;' and password/text()='&amp;quot;+Password.Text+&lt;br /&gt;
     &amp;quot;']/account/text())&amp;quot;);&lt;br /&gt;
  String account=Convert.ToString(nav.Evaluate(expr));&lt;br /&gt;
  if (account==&amp;quot;&amp;quot;)&lt;br /&gt;
  {&lt;br /&gt;
  // Login failed - UserUD and password pair could not be found in the XML document &lt;br /&gt;
  ...&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
  // Login succeeded - UserID and Password validated&lt;br /&gt;
  ...&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Based on the way this sample code is written, an attacker could try to inject an XPath expression into the UserID text field. For example, the attacker could enter the following text into the UserID text field (just like with SQL injection):&lt;br /&gt;
&lt;br /&gt;
' or 1=1 or ''='&lt;br /&gt;
&lt;br /&gt;
If this entry is not handled properly by the application, then the application will return the first account number in the XML document. If that occurs, the attacker will be logged in as the first user listed in the XML document.&lt;br /&gt;
&lt;br /&gt;
===Blind XPath Injection===&lt;br /&gt;
Using Blind XPath Injection, an attacker can extract a complete XML document for XPath querying without prior knowledge of the query. The attacker can access the entire XML &amp;quot;database&amp;quot; used in the XPath query which can be powerful against sites that use XPath queries (and XML &amp;quot;databases&amp;quot;) for authentication, searching and other uses.&lt;br /&gt;
&lt;br /&gt;
==Examples ==&lt;br /&gt;
&lt;br /&gt;
==Related Threats==&lt;br /&gt;
&lt;br /&gt;
==Related Attacks==&lt;br /&gt;
&lt;br /&gt;
==Related Vulnerabilities==&lt;br /&gt;
&lt;br /&gt;
==Related Countermeasures==&lt;br /&gt;
&lt;br /&gt;
[[Category:Attack]]&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Blind_XPath_Injection&amp;diff=9577</id>
		<title>Blind XPath Injection</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Blind_XPath_Injection&amp;diff=9577"/>
				<updated>2006-09-08T20:21:05Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* Simple XPath Injection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Stub}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===About XPath===&lt;br /&gt;
XPath is a sort of query language that describes how to locate specific elements (including attributes, processing instructions, etc.) in an XML document. Since it is a query language, XPath is somewhat similar to Structured Query Language (SQL). However, XPath can be used to reference almost any part of any XML document without access control restrictions, whereas with SQL, a &amp;quot;user&amp;quot; (which is a term undefined in the XPath/XML context) may be restricted to certain tables, columns or queries. [http://www.w3.org/TR/xpath]&lt;br /&gt;
&lt;br /&gt;
===Simple XPath Injection===&lt;br /&gt;
Suppose an application includes the following ASP.NET and C# source code:&lt;br /&gt;
  ...&lt;br /&gt;
  XmlDocument XmlDoc = new XmlDocument();&lt;br /&gt;
  XmlDoc.Load(&amp;quot;...&amp;quot;);&lt;br /&gt;
  ...&lt;br /&gt;
  XPathNavigator nav = XmlDoc.CreateNavigator();&lt;br /&gt;
  XPathExpression expr = nav.Compile(&amp;quot;string(//user[name/text()='&amp;quot;+UserID.Text+&lt;br /&gt;
     &amp;quot;' and password/text()='&amp;quot;+Password.Text+&lt;br /&gt;
     &amp;quot;']/account/text())&amp;quot;);&lt;br /&gt;
  String account=Convert.ToString(nav.Evaluate(expr));&lt;br /&gt;
  if (account==&amp;quot;&amp;quot;)&lt;br /&gt;
  {&lt;br /&gt;
  // Login failed - UserUD and password pair could not be found in the XML document &lt;br /&gt;
  ...&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
  // Login succeeded - UserID and Password validated&lt;br /&gt;
  ...&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Based on the way this code is written, an attacker could easily inject an XPath expression into the UserID text field and then submit the query. For example, the attacker could enter the following text into the UserID field (just like with SQL injection):&lt;br /&gt;
&lt;br /&gt;
' or 1=1 or ''='&lt;br /&gt;
&lt;br /&gt;
If not handled properly by the application, this data entry will always returns the first account number in the XML document. Such an attack is called “Xpath Injection”, which is an basically the same as a “SQL injection” attack. This can result in having the attacker logged in (as the first user listed in the XML document), although the attacker did not provide any valid user name or password.&lt;br /&gt;
&lt;br /&gt;
===Blind XPath Injection===&lt;br /&gt;
Using Blind XPath Injection, an attacker can extract a complete XML document for XPath querying without prior knowledge of the query. The attacker can access the entire XML &amp;quot;database&amp;quot; used in the XPath query which can be powerful against sites that use XPath queries (and XML &amp;quot;databases&amp;quot;) for authentication, searching and other uses.&lt;br /&gt;
&lt;br /&gt;
==Examples ==&lt;br /&gt;
&lt;br /&gt;
==Related Threats==&lt;br /&gt;
&lt;br /&gt;
==Related Attacks==&lt;br /&gt;
&lt;br /&gt;
==Related Vulnerabilities==&lt;br /&gt;
&lt;br /&gt;
==Related Countermeasures==&lt;br /&gt;
&lt;br /&gt;
[[Category:Attack]]&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Blind_XPath_Injection&amp;diff=9576</id>
		<title>Blind XPath Injection</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Blind_XPath_Injection&amp;diff=9576"/>
				<updated>2006-09-08T20:17:08Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* Simple XPath Injection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Stub}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===About XPath===&lt;br /&gt;
XPath is a sort of query language that describes how to locate specific elements (including attributes, processing instructions, etc.) in an XML document. Since it is a query language, XPath is somewhat similar to Structured Query Language (SQL). However, XPath can be used to reference almost any part of any XML document without access control restrictions, whereas with SQL, a &amp;quot;user&amp;quot; (which is a term undefined in the XPath/XML context) may be restricted to certain tables, columns or queries. [http://www.w3.org/TR/xpath]&lt;br /&gt;
&lt;br /&gt;
===Simple XPath Injection===&lt;br /&gt;
Suppose an application includes the following ASP.NET and C# source code:&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
XmlDocument XmlDoc = new XmlDocument();&lt;br /&gt;
XmlDoc.Load(&amp;quot;...&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
XPathNavigator nav = XmlDoc.CreateNavigator();&lt;br /&gt;
XPathExpression expr =&lt;br /&gt;
nav.Compile(&amp;quot;string(//user[name/text()='&amp;quot;+UserID.Text+&lt;br /&gt;
&amp;quot;' and password/text()='&amp;quot;+Password.Text+&lt;br /&gt;
&amp;quot;']/account/text())&amp;quot;);&lt;br /&gt;
String account=Convert.ToString(nav.Evaluate(expr));&lt;br /&gt;
if (account==&amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
// Login failed - UserUD and password pair could not be found in the XML document &lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
// Login succeeded - UserID and Password validated&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Based on the way this code is written, an attacker could easily inject an XPath expression into the UserID text field and then submit the query. For example, the attacker could enter the following text into the UserID field (just like with SQL injection):&lt;br /&gt;
&lt;br /&gt;
' or 1=1 or ''='&lt;br /&gt;
&lt;br /&gt;
If not handled properly by the application, this data entry will always returns the first account number in the XML document. Such an attack is called “Xpath Injection”, which is an basically the same as a “SQL injection” attack. This can result in having the attacker logged in (as the first user listed in the XML document), although the attacker did not provide any valid user name or password.&lt;br /&gt;
&lt;br /&gt;
===Blind XPath Injection===&lt;br /&gt;
Using Blind XPath Injection, an attacker can extract a complete XML document for XPath querying without prior knowledge of the query. The attacker can access the entire XML &amp;quot;database&amp;quot; used in the XPath query which can be powerful against sites that use XPath queries (and XML &amp;quot;databases&amp;quot;) for authentication, searching and other uses.&lt;br /&gt;
&lt;br /&gt;
==Examples ==&lt;br /&gt;
&lt;br /&gt;
==Related Threats==&lt;br /&gt;
&lt;br /&gt;
==Related Attacks==&lt;br /&gt;
&lt;br /&gt;
==Related Vulnerabilities==&lt;br /&gt;
&lt;br /&gt;
==Related Countermeasures==&lt;br /&gt;
&lt;br /&gt;
[[Category:Attack]]&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Blind_XPath_Injection&amp;diff=9575</id>
		<title>Blind XPath Injection</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Blind_XPath_Injection&amp;diff=9575"/>
				<updated>2006-09-08T20:16:12Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Stub}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===About XPath===&lt;br /&gt;
XPath is a sort of query language that describes how to locate specific elements (including attributes, processing instructions, etc.) in an XML document. Since it is a query language, XPath is somewhat similar to Structured Query Language (SQL). However, XPath can be used to reference almost any part of any XML document without access control restrictions, whereas with SQL, a &amp;quot;user&amp;quot; (which is a term undefined in the XPath/XML context) may be restricted to certain tables, columns or queries. [http://www.w3.org/TR/xpath]&lt;br /&gt;
&lt;br /&gt;
===Simple XPath Injection===&lt;br /&gt;
'''Example 1 (Using ASP.NET with C#):'''&lt;br /&gt;
&lt;br /&gt;
Suppose an application includes the following code:&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
XmlDocument XmlDoc = new XmlDocument();&lt;br /&gt;
XmlDoc.Load(&amp;quot;...&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
XPathNavigator nav = XmlDoc.CreateNavigator();&lt;br /&gt;
XPathExpression expr =&lt;br /&gt;
nav.Compile(&amp;quot;string(//user[name/text()='&amp;quot;+UserID.Text+&lt;br /&gt;
&amp;quot;' and password/text()='&amp;quot;+Password.Text+&lt;br /&gt;
&amp;quot;']/account/text())&amp;quot;);&lt;br /&gt;
String account=Convert.ToString(nav.Evaluate(expr));&lt;br /&gt;
if (account==&amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
// Login failed - UserUD and password pair could not be found in the XML document &lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
// Login succeeded - UserID and Password validated&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Based on the way this code is written, an attacker could easily inject an XPath expression into the UserID text field and then submit the query. For example, the attacker could enter the following text into the UserID field (just like with SQL injection):&lt;br /&gt;
&lt;br /&gt;
' or 1=1 or ''='&lt;br /&gt;
&lt;br /&gt;
If not handled properly by the application, this data entry will always returns the first account number in the XML document. Such an attack is called “Xpath Injection”, which is an basically the same as a “SQL injection” attack. This can result in having the attacker logged in (as the first user listed in the XML document), although the attacker did not provide any valid user name or password.&lt;br /&gt;
&lt;br /&gt;
===Blind XPath Injection===&lt;br /&gt;
Using Blind XPath Injection, an attacker can extract a complete XML document for XPath querying without prior knowledge of the query. The attacker can access the entire XML &amp;quot;database&amp;quot; used in the XPath query which can be powerful against sites that use XPath queries (and XML &amp;quot;databases&amp;quot;) for authentication, searching and other uses.&lt;br /&gt;
&lt;br /&gt;
==Examples ==&lt;br /&gt;
&lt;br /&gt;
==Related Threats==&lt;br /&gt;
&lt;br /&gt;
==Related Attacks==&lt;br /&gt;
&lt;br /&gt;
==Related Vulnerabilities==&lt;br /&gt;
&lt;br /&gt;
==Related Countermeasures==&lt;br /&gt;
&lt;br /&gt;
[[Category:Attack]]&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Blind_XPath_Injection&amp;diff=9574</id>
		<title>Blind XPath Injection</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Blind_XPath_Injection&amp;diff=9574"/>
				<updated>2006-09-08T20:14:57Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Stub}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===About XPath===&lt;br /&gt;
XPath is a sort of query language that describes how to locate specific elements (including attributes, processing instructions, etc.) in an XML document. Since it is a query language, XPath is somewhat similar to Structured Query Language (SQL). However, XPath can be used to reference almost any part of any XML document without access control restrictions, whereas with SQL, a &amp;quot;user&amp;quot; (which is a term undefined in the XPath/XML context) may be restricted to certain tables, columns or queries. [http://www.w3.org/TR/xpath]&lt;br /&gt;
&lt;br /&gt;
===Blind XPath Injection===&lt;br /&gt;
Using Blind XPath Injection, an attacker can extract a complete XML document for XPath querying without prior knowledge of the query. The attacker can access the entire XML &amp;quot;database&amp;quot; used in the XPath query which can be powerful against sites that use XPath queries (and XML &amp;quot;databases&amp;quot;) for authentication, searching and other uses.&lt;br /&gt;
&lt;br /&gt;
==Examples ==&lt;br /&gt;
&lt;br /&gt;
===Basic XPath Injection===&lt;br /&gt;
'''Example 1 (Using ASP.NET with C#):'''&lt;br /&gt;
&lt;br /&gt;
Suppose an application includes the following code:&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
XmlDocument XmlDoc = new XmlDocument();&lt;br /&gt;
XmlDoc.Load(&amp;quot;...&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
XPathNavigator nav = XmlDoc.CreateNavigator();&lt;br /&gt;
XPathExpression expr =&lt;br /&gt;
nav.Compile(&amp;quot;string(//user[name/text()='&amp;quot;+UserID.Text+&lt;br /&gt;
&amp;quot;' and password/text()='&amp;quot;+Password.Text+&lt;br /&gt;
&amp;quot;']/account/text())&amp;quot;);&lt;br /&gt;
String account=Convert.ToString(nav.Evaluate(expr));&lt;br /&gt;
if (account==&amp;quot;&amp;quot;)&lt;br /&gt;
{&lt;br /&gt;
// Login failed - UserUD and password pair could not be found in the XML document &lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
else&lt;br /&gt;
{&lt;br /&gt;
// Login succeeded - UserID and Password validated&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Based on the way this code is written, an attacker could easily inject an XPath expression into the UserID text field and then submit the query. For example, the attacker could enter the following text into the UserID field (just like with SQL injection):&lt;br /&gt;
&lt;br /&gt;
' or 1=1 or ''='&lt;br /&gt;
&lt;br /&gt;
If not handled properly by the application, this data entry will always returns the first account number in the XML document. Such an attack is called “Xpath Injection”, which is an basically the same as a “SQL injection” attack. This can result in having the attacker logged in (as the first user listed in the XML document), although the attacker did not provide any valid user name or password.&lt;br /&gt;
&lt;br /&gt;
==Related Threats==&lt;br /&gt;
&lt;br /&gt;
==Related Attacks==&lt;br /&gt;
&lt;br /&gt;
==Related Vulnerabilities==&lt;br /&gt;
&lt;br /&gt;
==Related Countermeasures==&lt;br /&gt;
&lt;br /&gt;
[[Category:Attack]]&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Blind_XPath_Injection&amp;diff=9569</id>
		<title>Blind XPath Injection</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Blind_XPath_Injection&amp;diff=9569"/>
				<updated>2006-09-08T20:00:53Z</updated>
		
		<summary type="html">&lt;p&gt;Manionc: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
&lt;br /&gt;
{{Template:Stub}}&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
===About XPath===&lt;br /&gt;
XPath is a sort of query language that describes how to locate specific elements (including attributes, processing instructions, etc.) in an XML document. Since it is a query language, XPath is somewhat similar to Structured Query Language (SQL). However, XPath can be used to reference almost any part of any XML document without access control restrictions, whereas with SQL, a &amp;quot;user&amp;quot; (which is a term undefined in the XPath/XML context) may be restricted to certain tables, columns or queries. [http://www.w3.org/TR/xpath]&lt;br /&gt;
&lt;br /&gt;
===Blind XPath Injection===&lt;br /&gt;
Using Blind XPath Injection, an attacker can extract a complete XML document for XPath querying without prior knowledge of the query. The attacker can access the entire XML &amp;quot;database&amp;quot; used in the XPath query which can be powerful against sites that use XPath queries (and XML &amp;quot;databases&amp;quot;) for authentication, searching and other uses.&lt;br /&gt;
&lt;br /&gt;
==Examples ==&lt;br /&gt;
&lt;br /&gt;
==Related Threats==&lt;br /&gt;
&lt;br /&gt;
==Related Attacks==&lt;br /&gt;
&lt;br /&gt;
==Related Vulnerabilities==&lt;br /&gt;
&lt;br /&gt;
==Related Countermeasures==&lt;br /&gt;
&lt;br /&gt;
[[Category:Attack]]&lt;/div&gt;</summary>
		<author><name>Manionc</name></author>	</entry>

	</feed>